call a2 hooks for linking and unlinking events (fixes #20228)

This commit is contained in:
Benjamin Dauvergne 2017-11-22 21:16:36 +01:00
parent 2e5bd982e6
commit eddf2da475
2 changed files with 8 additions and 3 deletions

View File

@ -5,6 +5,7 @@ from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend
from authentic2.a2_rbac.utils import get_default_ou
from authentic2 import hooks
from . import models, app_settings, utils
@ -31,6 +32,7 @@ class FcBackend(ModelBackend):
token=json.dumps(kwargs['token']))
logger.debug(u'user creation enabled with fc_account (sub : %s - token : %s)',
sub, json.dumps(kwargs['token']))
hooks.call_hooks('event', name='fc-create', user=user, sub=sub)
if not user:
return None
logger.debug(u'updated (given_name : %s - family_name : %s)', user_info['given_name'],

View File

@ -24,7 +24,7 @@ from django.core.urlresolvers import reverse
from django.forms import Form
from authentic2 import app_settings as a2_app_settings
from authentic2 import utils as a2_utils
from authentic2 import utils as a2_utils, hooks
from authentic2.a2_rbac.utils import get_default_ou
from . import app_settings, models, utils
@ -350,7 +350,6 @@ class LoginOrLinkView(PopupViewMixin, FcOAuthSessionViewMixin, View):
self.fc_account, created = models.FcAccount.objects.get_or_create(
defaults={'token': json_token},
sub=self.sub, user=request.user)
if created:
self.logger.info('fc link created sub %s', self.sub)
self.update_user_info()
@ -363,6 +362,7 @@ class LoginOrLinkView(PopupViewMixin, FcOAuthSessionViewMixin, View):
else:
messages.info(request, _('Your FranceConnect account {} '
'has been linked.').format(self.fc_account))
hooks.call_hooks('event', name='fc-link', user=request.user, sub=self.sub)
else:
self.fc_account.token = json_token
self.fc_account.save()
@ -394,7 +394,9 @@ class LoginOrLinkView(PopupViewMixin, FcOAuthSessionViewMixin, View):
fc_account, created = models.FcAccount.objects.get_or_create(
defaults={'token': json.dumps(self.token)},
sub=self.sub, user=user)
self.logger.info(u'fc link created sub %s user %s', self.sub, user)
if created:
self.logger.info(u'fc link created sub %s user %s', self.sub, user)
hooks.call_hooks('event', name='fc-link', user=user, sub=self.sub)
user = authenticate(sub=self.sub, user_info=self.user_info,
token=self.token)
else:
@ -493,6 +495,7 @@ class UnlinkView(LoggerMixin, FormView):
links = models.FcAccount.objects.filter(user=self.request.user)
for link in links:
self.logger.info(u'user %s unlinked from %s', self.request.user, link)
hooks.call_hooks('event', name='fc-unlink', user=self.request.user)
messages.info(self.request, _('The link with the FranceConnect account has been deleted.'))
links.delete()
return super(UnlinkView, self).form_valid(form)