328 |
328 |
user = utils_misc.authenticate(request, sub=self.sub, user_info=self.user_info, token=self.token)
|
329 |
329 |
|
330 |
330 |
if not user:
|
331 |
|
user = self.create_account(request, sub=self.sub, token=self.token, user_info=self.user_info)
|
|
331 |
user, created = self.create_account(
|
|
332 |
request, sub=self.sub, token=self.token, user_info=self.user_info
|
|
333 |
)
|
|
334 |
else:
|
|
335 |
created = False
|
332 |
336 |
|
333 |
337 |
if not user:
|
334 |
338 |
return self.redirect()
|
335 |
339 |
|
336 |
|
return self.finish_login(request, user, self.user_info)
|
|
340 |
return self.finish_login(request, user, self.user_info, created)
|
337 |
341 |
|
338 |
|
def finish_login(self, request, user, user_info):
|
|
342 |
def finish_login(self, request, user, user_info, created):
|
339 |
343 |
self.update_user_info(user, user_info)
|
340 |
344 |
utils_views.check_cookie_works(request)
|
341 |
345 |
utils_misc.login(request, user, 'france-connect', service=self.service)
|
... | ... | |
348 |
352 |
request.session.set_expiry(0)
|
349 |
353 |
|
350 |
354 |
# redirect to account edit page if any required attribute is not filled
|
351 |
|
missing = self.missing_required_attributes(user)
|
|
355 |
# only on user registration
|
|
356 |
missing = created and self.missing_required_attributes(user)
|
352 |
357 |
if missing:
|
353 |
358 |
messages.warning(
|
354 |
359 |
request,
|
... | ... | |
393 |
398 |
)
|
394 |
399 |
% email,
|
395 |
400 |
)
|
396 |
|
return None
|
|
401 |
return None, False
|
397 |
402 |
if not created and user.fc_accounts.exists():
|
398 |
403 |
messages.warning(
|
399 |
404 |
request,
|
... | ... | |
430 |
435 |
# let's try again
|
431 |
436 |
if created:
|
432 |
437 |
user.delete()
|
433 |
|
return utils_misc.authenticate(request, sub=sub, token=token, user_info=user_info)
|
|
438 |
return utils_misc.authenticate(request, sub=sub, token=token, user_info=user_info), False
|
434 |
439 |
except Exception:
|
435 |
440 |
# if anything unexpected happen and user was created, delete it and re-raise
|
436 |
441 |
if created:
|
... | ... | |
444 |
449 |
logger.info('auth_fc: existing account "%s" linked to FranceConnect sub "%s"', user, sub)
|
445 |
450 |
hooks.call_hooks('event', name='fc-link', user=user, sub=sub, request=request)
|
446 |
451 |
|
447 |
|
return utils_misc.authenticate(request, sub=sub, user_info=user_info, token=token)
|
|
452 |
authenticated_user = utils_misc.authenticate(request, sub=sub, user_info=user_info, token=token)
|
|
453 |
return authenticated_user, created
|
448 |
454 |
|
449 |
455 |
def uniqueness_check_failed(self, request):
|
450 |
456 |
# currently logged :
|