views: move login code to separate method (#55557)
This commit is contained in:
parent
e4bec98bbe
commit
dde8fa5d02
|
@ -277,24 +277,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:
|
||||
utils.login(request, user)
|
||||
session_index = attributes['session_index']
|
||||
if session_index:
|
||||
if not request.session.session_key:
|
||||
request.session.create()
|
||||
models.SessionIndex.objects.get_or_create(
|
||||
saml_identifier=user.saml_identifier,
|
||||
session_key=request.session.session_key,
|
||||
session_index=session_index,
|
||||
)
|
||||
self.log.info(
|
||||
'user %s (NameID is %r) logged in using SAML', user, attributes['name_id_content']
|
||||
)
|
||||
request.session['mellon_session'] = utils.flatten_datetime(attributes)
|
||||
if 'session_not_on_or_after' in attributes and not settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
|
||||
request.session.set_expiry(
|
||||
utils.get_seconds_expiry(attributes['session_not_on_or_after'])
|
||||
)
|
||||
self.login(user, attributes)
|
||||
else:
|
||||
self.log.warning(
|
||||
'user %s (NameID is %r) is inactive, login refused', user, attributes['name_id_content']
|
||||
|
@ -309,6 +292,22 @@ class LoginView(ProfileMixin, LogMixin, View):
|
|||
|
||||
return HttpResponseRedirect(next_url)
|
||||
|
||||
def login(self, user, attributes):
|
||||
utils.login(self.request, user)
|
||||
session_index = attributes['session_index']
|
||||
if session_index:
|
||||
if not self.request.session.session_key:
|
||||
self.request.session.create()
|
||||
models.SessionIndex.objects.get_or_create(
|
||||
saml_identifier=user.saml_identifier,
|
||||
session_key=self.request.session.session_key,
|
||||
session_index=session_index,
|
||||
)
|
||||
self.log.info('user %s (NameID is %r) logged in using SAML', user, attributes['name_id_content'])
|
||||
self.request.session['mellon_session'] = utils.flatten_datetime(attributes)
|
||||
if 'session_not_on_or_after' in attributes and not settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
|
||||
self.request.session.set_expiry(utils.get_seconds_expiry(attributes['session_not_on_or_after']))
|
||||
|
||||
def retry_login(self):
|
||||
"""Retry login if it failed for a temporary error.
|
||||
|
||||
|
|
Loading…
Reference in New Issue