diff --git a/note_kfet/fixtures/initial.json b/note_kfet/fixtures/initial.json index 08501606..1b779980 100644 --- a/note_kfet/fixtures/initial.json +++ b/note_kfet/fixtures/initial.json @@ -6,5 +6,14 @@ "domain": "localhost", "name": "La Note Kfet \ud83c\udf7b" } + }, + { + "model": "cas_server.servicepattern", + "pk": 1, + "fields": { + "pos": 1, + "pattern": ".*", + "name": "REPLACEME" + } } ] \ No newline at end of file diff --git a/note_kfet/settings/base.py b/note_kfet/settings/base.py index d46ffbe2..39b4124b 100644 --- a/note_kfet/settings/base.py +++ b/note_kfet/settings/base.py @@ -55,6 +55,9 @@ INSTALLED_APPS = [ # Autocomplete 'dal', 'dal_select2', + # CAS + 'cas_server', + 'cas', # Note apps 'activity', @@ -76,6 +79,7 @@ MIDDLEWARE = [ 'django.middleware.locale.LocaleMiddleware', 'django.contrib.sites.middleware.CurrentSiteMiddleware', 'note_kfet.middlewares.TurbolinksMiddleware', + 'cas.middleware.CASMiddleware', ] ROOT_URLCONF = 'note_kfet.urls' @@ -128,6 +132,7 @@ PASSWORD_HASHERS = [ AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', # this is default 'guardian.backends.ObjectPermissionBackend', + 'cas.backends.CASBackend', ) REST_FRAMEWORK = { @@ -188,3 +193,8 @@ STATIC_URL = '/static/' ALIAS_VALIDATOR_REGEX = r'' +# CAS Settings +CAS_AUTO_CREATE_USER = False +CAS_LOGO_URL = "/static/img/Saperlistpopette.png" +CAS_FAVICON_URL = "/static/favicon/favicon-32x32.png" + diff --git a/note_kfet/settings/development.py b/note_kfet/settings/development.py index 60055ee2..ad2cd2f1 100644 --- a/note_kfet/settings/development.py +++ b/note_kfet/settings/development.py @@ -48,3 +48,7 @@ CSRF_COOKIE_SECURE = False CSRF_COOKIE_HTTPONLY = False X_FRAME_OPTIONS = 'DENY' SESSION_COOKIE_AGE = 60 * 60 * 3 + +# CAS Client settings +# Can be modified in secrets.py +CAS_SERVER_URL = "https://note.comby.xyz/cas/" diff --git a/note_kfet/settings/production.py b/note_kfet/settings/production.py index 296c17a4..353d7b8a 100644 --- a/note_kfet/settings/production.py +++ b/note_kfet/settings/production.py @@ -47,3 +47,6 @@ CSRF_COOKIE_SECURE = False CSRF_COOKIE_HTTPONLY = False X_FRAME_OPTIONS = 'DENY' SESSION_COOKIE_AGE = 60 * 60 * 3 + +# CAS Client settings +CAS_SERVER_URL = "https://note.crans.org/cas/" diff --git a/note_kfet/urls.py b/note_kfet/urls.py index 303e229a..ce2c745a 100644 --- a/note_kfet/urls.py +++ b/note_kfet/urls.py @@ -1,6 +1,7 @@ # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay # SPDX-License-Identifier: GPL-3.0-or-later +from cas import views as cas_views from django.contrib import admin from django.urls import path, include from django.views.generic import RedirectView @@ -12,6 +13,10 @@ urlpatterns = [ # Include project routers path('note/', include('note.urls')), + # Include CAS Client routers + path('accounts/login/', cas_views.login, name='login'), + path('accounts/logout/', cas_views.logout, name='logout'), + # Include Django Contrib and Core routers path('i18n/', include('django.conf.urls.i18n')), path('accounts/', include('member.urls')), @@ -19,6 +24,9 @@ urlpatterns = [ path('admin/doc/', include('django.contrib.admindocs.urls')), path('admin/', admin.site.urls), + # Include CAS Server routers + path('cas/', include('cas_server.urls', namespace="cas_server")), + # Include Django REST API path('api/', include('api.urls')), ] diff --git a/requirements.txt b/requirements.txt index 21c24808..244690bc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,8 @@ defusedxml==0.6.0 Django~=2.2 django-allauth==0.39.1 django-autocomplete-light==3.5.1 +django-cas-client==1.5.3 +django-cas-server==1.1.0 django-crispy-forms==1.7.2 django-extensions==2.1.9 django-filter==2.2.0 diff --git a/static/img/Saperlistpopette.png b/static/img/Saperlistpopette.png new file mode 100644 index 00000000..4b351fb6 Binary files /dev/null and b/static/img/Saperlistpopette.png differ