diff --git a/README.rst b/README.rst index 8d037af..78eaae1 100644 --- a/README.rst +++ b/README.rst @@ -104,6 +104,9 @@ All settings are optional. Add them to ``settings.py`` to customize ``django-cas Template settings: +* ``CAS_LOGO_URL``: Url to the logo showed in the up left corner on the default + templates. Set it to ``False`` to disable it. + * ``CAS_LOGIN_TEMPLATE``: Path to the template showed on ``/login`` then the user is not autenticated. The default is ``"cas_server/login.html"``. * ``CAS_WARN_TEMPLATE``: Path to the template showed on ``/login?service=...`` then diff --git a/cas_server/default_settings.py b/cas_server/default_settings.py index fe5de28..34b8aa5 100644 --- a/cas_server/default_settings.py +++ b/cas_server/default_settings.py @@ -10,6 +10,7 @@ # (c) 2015 Valentin Samir """Default values for the app's settings""" from django.conf import settings +from django.contrib.staticfiles.templatetags.staticfiles import static def setting_default(name, default_value): @@ -17,6 +18,8 @@ def setting_default(name, default_value): value = getattr(settings, name, default_value) setattr(settings, name, value) +setting_default('CAS_LOGO_URL', static("cas_server/logo.png")) + setting_default('CAS_LOGIN_TEMPLATE', 'cas_server/login.html') setting_default('CAS_FEDERATE_TEMPLATE', 'cas_server/federate.html') setting_default('CAS_WARN_TEMPLATE', 'cas_server/warn.html') diff --git a/cas_server/static/cas_server/login.css b/cas_server/static/cas_server/login.css index 865312a..cd81500 100644 --- a/cas_server/static/cas_server/login.css +++ b/cas_server/static/cas_server/login.css @@ -40,3 +40,10 @@ body { border-top-right-radius: 0; } +#app-name { + text-align: center; +} +#app-name img { + width:110px; +} + diff --git a/cas_server/static/cas_server/logo.png b/cas_server/static/cas_server/logo.png new file mode 100644 index 0000000..0bbae02 Binary files /dev/null and b/cas_server/static/cas_server/logo.png differ diff --git a/cas_server/static/cas_server/logo.svg b/cas_server/static/cas_server/logo.svg new file mode 100644 index 0000000..b9c3cdd --- /dev/null +++ b/cas_server/static/cas_server/logo.svg @@ -0,0 +1,114 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + CAS + + diff --git a/cas_server/templates/cas_server/base.html b/cas_server/templates/cas_server/base.html index 9a51014..cb3a93e 100644 --- a/cas_server/templates/cas_server/base.html +++ b/cas_server/templates/cas_server/base.html @@ -12,6 +12,15 @@ {% block bootstrap3_content %}
+
+
+
+

+ {% if settings.CAS_LOGO_URL %} {% endif %} + {% trans "Central Authentication Service" %}

+
+
+
diff --git a/cas_server/utils.py b/cas_server/utils.py index ee6f1c4..7d418ad 100644 --- a/cas_server/utils.py +++ b/cas_server/utils.py @@ -29,6 +29,11 @@ except ImportError: from urllib.parse import urlparse, urlunparse, parse_qsl, urlencode +def context(params): + params["settings"] = settings + return params + + def JsonResponse(request, data): data["messages"] = [] for msg in messages.get_messages(request): diff --git a/cas_server/views.py b/cas_server/views.py index 69662d5..9148816 100644 --- a/cas_server/views.py +++ b/cas_server/views.py @@ -176,7 +176,7 @@ class LogoutView(View, LogoutMixin): return render( request, settings.CAS_LOGOUT_TEMPLATE, - {'logout_msg': logout_msg} + utils.context({'logout_msg': logout_msg}) ) @@ -425,7 +425,7 @@ class LoginView(View, LogoutMixin): return render( self.request, settings.CAS_WARN_TEMPLATE, - {'form': warn_form} + utils.context({'form': warn_form}) ) else: # redirect, using method ? @@ -479,7 +479,7 @@ class LoginView(View, LogoutMixin): return render( self.request, settings.CAS_LOGGED_TEMPLATE, - {'session': self.request.session} + utils.context({'session': self.request.session}) ) else: data = {"status": "error", "detail": "auth", "code": error} @@ -520,7 +520,7 @@ class LoginView(View, LogoutMixin): return render( self.request, settings.CAS_LOGGED_TEMPLATE, - {'session': self.request.session} + utils.context({'session': self.request.session}) ) def not_authenticated(self): @@ -565,11 +565,11 @@ class LoginView(View, LogoutMixin): return render( self.request, settings.CAS_LOGIN_TEMPLATE, - { + utils.context({ 'form': self.form, 'auto_submit': True, 'post_url': reverse("cas_server:login") - } + }) ) else: if ( @@ -588,10 +588,14 @@ class LoginView(View, LogoutMixin): return render( self.request, settings.CAS_FEDERATE_TEMPLATE, - {'form': self.form} + utils.context({'form': self.form}) ) else: - return render(self.request, settings.CAS_LOGIN_TEMPLATE, {'form': self.form}) + return render( + self.request, + settings.CAS_LOGIN_TEMPLATE, + utils.context({'form': self.form}) + ) def common(self): """Part execute uppon GET and POST request"""