This commit is contained in:
Benjamin Dauvergne 2017-07-17 10:10:54 +02:00
parent 6f0b9fb327
commit cd53e78f15
2 changed files with 37 additions and 71 deletions

View File

@ -353,14 +353,39 @@ class AppConfig(django.apps.AppConfig):
if hasattr(view.request.user, 'oidc_client'):
return queryset.filter(ou__slug='usagers')
def modify_profile_form(form):
if form.instance and form.instance.attributes.validated:
for field in ('first_name', 'last_name', 'birthdate', 'title',
'birthplace', 'birthcountry'):
form.fields.pop(field, None)
return form
A2_MODIFY_PROFILE_FORM = modify_profile_form
def a2_hook_idp_oidc_modify_user_info(self, client, user, scope_set, user_info):
user_info.clear()
if 'email' in scope_set:
user_info['email'] = user.email
if 'profile' in scope_set:
user_info['first_name'] = user.first_name
user_info['last_name'] = user.last_name
user_info['given_name'] = user.first_name
user_info['family_name'] = user.last_name
user_info['title'] = user.attributes.title
user_info['gender'] = {'Monsieur': 'male', 'Madame': 'female'}.get(
user.attributes.title)
user_info['birthdate'] = (user.attributes.birthdate and
user.attributes.birthdate.isoformat())
user_info['birthplace'] = user.attributes.birthplace
user_info['birthcountry'] = user.attributes.birthcountry
user_info['birthplace_insee'] = user.attributes.birthplace_insee
user_info['birthcountry_insee'] = user.attributes.birthcountry_insee
user_info['validated'] = user.attributes.validated
user_info['validation_date'] = (user.attributes.validation_date and
user.attributes.validation_date.isoformat())
user_info['validation_context'] = user.attributes.validation_context
if 'crown' in scope_set:
user_info['preferred_username'] = user.attributes.preferred_username
user_info['preferred_givenname'] = user.attributes.preferred_givenname
user_info['address_number'] = user.attributes.address_number
user_info['address_street'] = user.attributes.address_street
user_info['address_complement'] = user.attributes.address_complement
user_info['address_zipcode'] = user.attributes.address_zipcode
user_info['address_city'] = user.attributes.address_city
user_info['address_country'] = user.attributes.address_country
user_info['home_mobile_phone'] = user.attributes.home_mobile_phone
user_info['home_phone'] = user.attributes.home_phone
user_info['professional_mobile_phone'] = user.attributes.professional_mobile_phone
user_info['professional_phone'] = user.attributes.professional_phone
user_info['birthdepartment'] = user.attributes.birthdepartment

View File

@ -34,66 +34,6 @@ A2_MANAGER_ROLES_SHOW_PERMISSIONS = True
A2_MANAGER_ROLE_MEMBERS_FROM_OU = True
class RemoveFranceConnect(object):
name = 'remove-franceconnect'
title = 'Supprimer la liaison FranceConnect'
confirm = 'Êtes-vous sûr?'
def do(self, user, request, *args, **kwargs):
from authentic2_auth_fc.models import FcAccount
FcAccount.objects.filter(user=user).delete()
def display(self, user, request):
from authentic2_auth_fc.models import FcAccount
return FcAccount.objects.filter(user=user).exists()
A2_MANAGER_USER_ACTIONS = [RemoveFranceConnect()]
def modify_user_info(user, user_info, scope_set):
import logging
user_info.clear()
if 'email' in scope_set:
logging.info('givin email')
user_info['email'] = user.email
if 'profile' in scope_set:
logging.info('givin profile')
user_info['first_name'] = user.first_name
user_info['last_name'] = user.last_name
user_info['given_name'] = user.first_name
user_info['family_name'] = user.last_name
user_info['title'] = user.attributes.title
user_info['gender'] = {'Monsieur': 'male', 'Madame': 'female'}.get(user.attributes.title)
user_info['birthdate'] = user.attributes.birthdate and user.attributes.birthdate.isoformat()
user_info['birthplace'] = user.attributes.birthplace
user_info['birthcountry'] = user.attributes.birthcountry
user_info['birthplace_insee'] = user.attributes.birthplace_insee
user_info['birthcountry_insee'] = user.attributes.birthcountry_insee
user_info['validated'] = user.attributes.validated
user_info['validation_date'] = user.attributes.validation_date and user.attributes.validation_date.isoformat()
user_info['validation_context'] = user.attributes.validation_context
if 'crown' in scope_set:
logging.info('giving crown')
user_info['preferred_username'] = user.attributes.preferred_username
user_info['preferred_givenname'] = user.attributes.preferred_givenname
user_info['address_number'] = user.attributes.address_number
user_info['address_street'] = user.attributes.address_street
user_info['address_complement'] = user.attributes.address_complement
user_info['address_zipcode'] = user.attributes.address_zipcode
user_info['address_city'] = user.attributes.address_city
user_info['address_country'] = user.attributes.address_country
user_info['home_mobile_phone'] = user.attributes.home_mobile_phone
user_info['home_phone'] = user.attributes.home_phone
user_info['professional_mobile_phone'] = user.attributes.professional_mobile_phone
user_info['professional_phone'] = user.attributes.professional_phone
user_info['birthdepartment'] = user.attributes.birthdepartment
A2_IDP_OIDC_MODIFY_USER_INFO = modify_user_info
A2_PROFILE_FIELDS = [
u'email',
u'title',
@ -168,6 +108,7 @@ if ('Memcached' in CACHES['default']['BACKEND'] or 'Memcached' in
print 'canot load django-cachalot', e
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
# 48h pour les mails de reset de mot de passe
PASSWORD_RESET_TIMEOUT_DAYS = 2
A2_EMAIL_CHANGE_TOKEN_LIFETIME = 3600 * 24 * 2