apps/middleware: conserve le slug du dernier service ayant requis un sso en session

Pour utilisation par le hook fc-link et le remplissage du champ validation_partner.
This commit is contained in:
Benjamin Dauvergne 2017-11-24 19:15:33 +01:00
parent 7947784f89
commit 0da15044ac
2 changed files with 12 additions and 0 deletions

View File

@ -528,6 +528,10 @@ class AppConfig(django.apps.AppConfig):
def cut_event_sso_request(self, idp, service, **kwargs):
self.stat('sso-request', service.slug)
from authentic2.middleware import StoreRequestMiddleware
request = StoreRequestMiddleware.get_request()
if request:
request.session['service_slug'] = service.slug
def cut_event_sso_success(self, idp, service, user, **kwargs):
msg = u'connexion à %s' % service.name
@ -620,6 +624,11 @@ class AppConfig(django.apps.AppConfig):
user.attributes.validated = True
user.attributes.validation_context = 'FC'
user.attributes.validation_date = now().date()
partner = request.session.get('service_slug')
if hasattr(request, 'partner'):
partner = partner or request.partner.get('ou_slug')
if partner:
user.attributes.validation_partner = partner
def cut_event_fc_unlink(self, user, **kwargs):
self.log_action(user, u'déliaison de FranceConnect')

View File

@ -39,6 +39,7 @@ class CUTMiddleware(object):
if hasattr(request, 'session'):
if not domain:
domain = request.session.get('cut_domain')
request.service_slug = request.session.get('service_slug', None)
if not domain:
domain = getattr(request, 'domain', None)
@ -83,5 +84,7 @@ class CUTMiddleware(object):
request.domain = None
def process_response(self, request, response):
if hasattr(request, 'session'):
request.session['service_slug'] = getattr(request, 'service_slug', None)
self.process_request(request)
return response