update user verified fields with national register on all logins (imio/14668)

This commit is contained in:
Frédéric Péters 2017-02-23 15:16:42 +01:00
parent 1a728f6768
commit de5b296848
2 changed files with 48 additions and 0 deletions

View File

@ -14,7 +14,19 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import django.apps
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.signals import user_logged_in
class AppConfig(django.apps.AppConfig):
name = 'authentic2_auth_fedict'
def ready(self):
from . import signals
user_logged_in.connect(signals.on_user_logged_in)
default_app_config = 'authentic2_auth_fedict.AppConfig'
class Plugin(object):

View File

@ -0,0 +1,36 @@
# authentic2_auth_fedict - Fedict authentication for Authentic
# Copyright (C) 2017 Entr'ouvert
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from authentic2.models import Attribute, AttributeValue
from . import app_settings
from .adapters import AuthenticAdapter
def on_user_logged_in(sender, request, user, **kwargs):
if not app_settings.enable:
return
if user.backend == 'authentic2_auth_fedict.backends.FedictBackend':
return
attribute = Attribute.objects.get(name='nrn')
try:
av = AttributeValue.objects.with_owner(user).filter(attribute=attribute, verified=True)[0]
except IndexError:
return
nrn = av.to_python()
if not nrn:
return
adapter = AuthenticAdapter()
adapter.provision_from_nrn(user, nrn)