277 |
277 |
next_url = self.get_next_url(default=resolve_url(settings.LOGIN_REDIRECT_URL))
|
278 |
278 |
if user is not None:
|
279 |
279 |
if user.is_active:
|
280 |
|
utils.login(request, user)
|
281 |
|
session_index = attributes['session_index']
|
282 |
|
if session_index:
|
283 |
|
if not request.session.session_key:
|
284 |
|
request.session.create()
|
285 |
|
models.SessionIndex.objects.get_or_create(
|
286 |
|
saml_identifier=user.saml_identifier,
|
287 |
|
session_key=request.session.session_key,
|
288 |
|
session_index=session_index,
|
289 |
|
)
|
290 |
|
self.log.info(
|
291 |
|
'user %s (NameID is %r) logged in using SAML', user, attributes['name_id_content']
|
292 |
|
)
|
293 |
|
request.session['mellon_session'] = utils.flatten_datetime(attributes)
|
294 |
|
if 'session_not_on_or_after' in attributes and not settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
|
295 |
|
request.session.set_expiry(
|
296 |
|
utils.get_seconds_expiry(attributes['session_not_on_or_after'])
|
297 |
|
)
|
|
280 |
self.login(user, attributes)
|
298 |
281 |
else:
|
299 |
282 |
self.log.warning(
|
300 |
283 |
'user %s (NameID is %r) is inactive, login refused', user, attributes['name_id_content']
|
... | ... | |
309 |
292 |
|
310 |
293 |
return HttpResponseRedirect(next_url)
|
311 |
294 |
|
|
295 |
def login(self, user, attributes):
|
|
296 |
utils.login(self.request, user)
|
|
297 |
session_index = attributes['session_index']
|
|
298 |
if session_index:
|
|
299 |
if not self.request.session.session_key:
|
|
300 |
self.request.session.create()
|
|
301 |
models.SessionIndex.objects.get_or_create(
|
|
302 |
saml_identifier=user.saml_identifier,
|
|
303 |
session_key=self.request.session.session_key,
|
|
304 |
session_index=session_index,
|
|
305 |
)
|
|
306 |
self.log.info('user %s (NameID is %r) logged in using SAML', user, attributes['name_id_content'])
|
|
307 |
self.request.session['mellon_session'] = utils.flatten_datetime(attributes)
|
|
308 |
if 'session_not_on_or_after' in attributes and not settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
|
|
309 |
self.request.session.set_expiry(utils.get_seconds_expiry(attributes['session_not_on_or_after']))
|
|
310 |
|
312 |
311 |
def retry_login(self):
|
313 |
312 |
"""Retry login if it failed for a temporary error.
|
314 |
313 |
|
315 |
|
-
|