update user verified fields with national register on all logins (imio/14668)
This commit is contained in:
parent
1a728f6768
commit
de5b296848
|
@ -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):
|
||||
|
|
|
@ -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)
|
Loading…
Reference in New Issue