Projet

Général

Profil

0002-auth_oidc-use-custom-widget-in-claim-mapping-admin-f.patch

Paul Marillonnet, 31 mars 2020 14:00

Télécharger (2,65 ko)

Voir les différences:

Subject: [PATCH 2/5] auth_oidc: use custom widget in claim mapping admin form
 (#37871)

 src/authentic2_auth_oidc/admin.py | 36 ++++++++++++++++++++++++++++---
 1 file changed, 33 insertions(+), 3 deletions(-)
src/authentic2_auth_oidc/admin.py
1 1
# authentic2 - versatile identity manager
2
# Copyright (C) 2010-2019 Entr'ouvert
2
# Copyright (C) 2010-2020 Entr'ouvert
3 3
#
4 4
# This program is free software: you can redistribute it and/or modify it
5 5
# under the terms of the GNU Affero General Public License as published
......
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django import forms
17 18
from django.contrib import admin
18 19

  
20
from authentic2.attributes_ng.engine import get_attribute_names
21
from authentic2.forms.widgets import DatalistTextInput
22

  
19 23
from . import models
20 24

  
21 25

  
26

  
27
class OIDCClaimMappingForm(forms.ModelForm):
28
    def __init__(self, *args, **kwargs):
29
        super(OIDCClaimMappingForm, self).__init__(*args, **kwargs)
30
        claim_widget = self.fields['claim'].widget
31
        # fill datalist with standard claims from
32
        # https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
33
        claim_widget.data = ('sub', 'name', 'given_name', 'family_name', 'nickname'
34
                'preferred_username', 'profile', 'picture', 'website', 'email',
35
                'email_verified', 'gender', 'birthdate', 'zoneinfo', 'locale',
36
                'phone_number', 'phone_number_verified', 'address',
37
                'updated_at')
38
        claim_widget.name = 'list__oidcclaim-mapping-inline'
39
        claim_widget.attrs.update({'list': 'list__oidcclaim-mapping-inline'})
40

  
41
    class Meta:
42
        model = models.OIDCClaimMapping
43
        fields = [
44
            'claim', 'attribute', 'verified', 'required', 'idtoken_claim',
45
        ]
46
        readonly_fields = ['created', 'modified']
47
        widgets = {
48
            'claim': DatalistTextInput,
49
        }
50

  
51

  
22 52
class OIDCClaimMappingInline(admin.TabularInline):
23 53
    model = models.OIDCClaimMapping
24
    fields = ['claim', 'attribute', 'verified', 'required', 'idtoken_claim', 'created', 'modified']
25
    readonly_fields = ['created', 'modified']
54
    form = OIDCClaimMappingForm
55
    extra = 3
26 56

  
27 57

  
28 58
class OIDCProviderAdmin(admin.ModelAdmin):
29
-