auth_oidc: use custom widget in claim mapping admin form (#37871)
This commit is contained in:
parent
dccf9a571f
commit
c4636a41ce
|
@ -1,5 +1,5 @@
|
|||
# authentic2 - versatile identity manager
|
||||
# Copyright (C) 2010-2019 Entr'ouvert
|
||||
# Copyright (C) 2010-2020 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
|
||||
|
@ -14,15 +14,45 @@
|
|||
# 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 django import forms
|
||||
from django.contrib import admin
|
||||
|
||||
from authentic2.attributes_ng.engine import get_attribute_names
|
||||
from authentic2.forms.widgets import DatalistTextInput
|
||||
|
||||
from . import models
|
||||
|
||||
|
||||
|
||||
class OIDCClaimMappingForm(forms.ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(OIDCClaimMappingForm, self).__init__(*args, **kwargs)
|
||||
claim_widget = self.fields['claim'].widget
|
||||
# fill datalist with standard claims from
|
||||
# https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
|
||||
claim_widget.data = ('sub', 'name', 'given_name', 'family_name', 'nickname'
|
||||
'preferred_username', 'profile', 'picture', 'website', 'email',
|
||||
'email_verified', 'gender', 'birthdate', 'zoneinfo', 'locale',
|
||||
'phone_number', 'phone_number_verified', 'address',
|
||||
'updated_at')
|
||||
claim_widget.name = 'list__oidcclaim-mapping-inline'
|
||||
claim_widget.attrs.update({'list': 'list__oidcclaim-mapping-inline'})
|
||||
|
||||
class Meta:
|
||||
model = models.OIDCClaimMapping
|
||||
fields = [
|
||||
'claim', 'attribute', 'verified', 'required', 'idtoken_claim',
|
||||
]
|
||||
readonly_fields = ['created', 'modified']
|
||||
widgets = {
|
||||
'claim': DatalistTextInput,
|
||||
}
|
||||
|
||||
|
||||
class OIDCClaimMappingInline(admin.TabularInline):
|
||||
model = models.OIDCClaimMapping
|
||||
fields = ['claim', 'attribute', 'verified', 'required', 'idtoken_claim', 'created', 'modified']
|
||||
readonly_fields = ['created', 'modified']
|
||||
form = OIDCClaimMappingForm
|
||||
extra = 3
|
||||
|
||||
|
||||
class OIDCProviderAdmin(admin.ModelAdmin):
|
||||
|
|
Loading…
Reference in New Issue