OIDC authentication: provide link to view/edit user data

This commit is contained in:
Helmut Merz 2025-09-01 08:54:08 +02:00
parent e079ef6747
commit 8c43b4b406

View file

@ -10,7 +10,7 @@ import requests
from time import time from time import time
from urllib.parse import urlencode from urllib.parse import urlencode
from zope.authentication.interfaces import IAuthentication, IPrincipal from zope.authentication.interfaces import IAuthentication, IPrincipal
from zope.interface import implementer from zope.interface import Attribute, Interface, implementer
from zope.publisher.interfaces import Unauthorized from zope.publisher.interfaces import Unauthorized
from zope.security.interfaces import IGroupAwarePrincipal from zope.security.interfaces import IGroupAwarePrincipal
@ -63,7 +63,11 @@ class OidcAuthentication:
authentication = OidcAuthentication(None) authentication = OidcAuthentication(None)
@implementer(IGroupAwarePrincipal) class IExternalPrincipal(Interface):
extUserLink = Attribute('Link to OIDC provider for viewing/editing external user')
@implementer(IGroupAwarePrincipal, IExternalPrincipal)
class Principal: class Principal:
def __init__(self, id, data): def __init__(self, id, data):
@ -78,6 +82,10 @@ class Principal:
def groups(self): def groups(self):
return self.data.get('groups', []) return self.data.get('groups', [])
@property
def extUserLink(self):
return config.oidc_provider + '/ui/console/users/me'
def asDict(self): def asDict(self):
data = self.data.copy() data = self.data.copy()
data['id'] = self.id data['id'] = self.id