From aa47a5b620d6e12fe5cf8f1cc59c99097b3c6324 Mon Sep 17 00:00:00 2001
From: Guilhem Niot <guilhem@gniot.fr>
Date: Wed, 23 Mar 2022 23:31:29 +0100
Subject: [PATCH] Expose CAS server

---
 interludes/cas_model.py | 15 +++++++++++++++
 interludes/settings.py  |  5 +++++
 interludes/urls.py      |  3 ++-
 3 files changed, 22 insertions(+), 1 deletion(-)
 create mode 100644 interludes/cas_model.py

diff --git a/interludes/cas_model.py b/interludes/cas_model.py
new file mode 100644
index 0000000..c86090e
--- /dev/null
+++ b/interludes/cas_model.py
@@ -0,0 +1,15 @@
+from django.contrib.auth import get_user_model
+from cas_server.auth import AuthUser, DjangoAuthUser
+
+class InterLudesAuthUser(DjangoAuthUser):  # pragma: no cover
+    """
+        Overrides DjangoAuthUser constructor
+    """
+
+    def __init__(self, username):
+        User = get_user_model()
+        try:
+            self.user = User.objects.get(email=username)
+        except User.DoesNotExist:
+            pass
+        super(DjangoAuthUser, self).__init__(username)
\ No newline at end of file
diff --git a/interludes/settings.py b/interludes/settings.py
index 7a6ab3e..a27598f 100644
--- a/interludes/settings.py
+++ b/interludes/settings.py
@@ -90,6 +90,7 @@ INSTALLED_APPS = [
 	'accounts.apps.AccountsConfig',
 	'site_settings.apps.SiteSettingsConfig',
 	'shared.apps.SharedConfig',
+	'cas_server',
 ]
 
 MIDDLEWARE = [
@@ -190,3 +191,7 @@ EMAIL_SIGNATURE = '-- Site Interludes (mail généré automatiquement)'
 
 # Prefix to mails to users
 USER_EMAIL_SUBJECT_PREFIX = "[interludes] "
+
+
+# CAS SERVER
+CAS_AUTH_CLASS = "interludes.cas_model.InterLudesAuthUser"
\ No newline at end of file
diff --git a/interludes/urls.py b/interludes/urls.py
index 0a9aeb4..8654d9f 100644
--- a/interludes/urls.py
+++ b/interludes/urls.py
@@ -19,4 +19,5 @@ from django.urls import path, include
 urlpatterns = [
     path('admin/', admin.site.urls),
     path('', include('home.urls')),
-]
+    path('cas/', include('cas_server.urls', namespace="cas_server")),
+]
\ No newline at end of file
-- 
GitLab