diff --git a/mellon/utils.py b/mellon/utils.py index 1660dec..ab092a7 100644 --- a/mellon/utils.py +++ b/mellon/utils.py @@ -4,6 +4,7 @@ import importlib from functools import wraps import isodate +from django.contrib import auth from django.core.urlresolvers import reverse from django.template.loader import render_to_string from django.utils.timezone import make_aware, now, make_naive, is_aware, get_default_timezone @@ -237,3 +238,11 @@ def get_status_codes_and_message(profile): if status.statusMessage: message = status.statusMessage.decode('utf-8') return status_codes, message + +def login(request, user): + for adapter in get_adapters(): + if hasattr(adapter, 'auth_login'): + adapter.auth_login(request, user) + break + else: + auth.login(request, user) diff --git a/mellon/views.py b/mellon/views.py index 9879364..4697eca 100644 --- a/mellon/views.py +++ b/mellon/views.py @@ -192,7 +192,7 @@ class LoginView(ProfileMixin, LogMixin, View): next_url = self.get_next_url(default=resolve_url(settings.LOGIN_REDIRECT_URL)) if user is not None: if user.is_active: - auth.login(request, user) + utils.login(request, user) self.log.info('user %r (NameID is %r) logged in using SAML', unicode(user), attributes['name_id_content']) request.session['mellon_session'] = utils.flatten_datetime(attributes)