call a2 hooks for linking and unlinking events (fixes #20228)
This commit is contained in:
parent
2e5bd982e6
commit
eddf2da475
|
@ -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'],
|
||||
|
|
|
@ -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)
|
||||
|
|
Reference in New Issue