diff --git a/CHANGELOG.md b/CHANGELOG.md index 386d2f4..46cd2b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ - Better handle values from identity data. @cekk +- Add `username_userid` User ID factory . @ericof + ## 1.1.2 (2023-03-15) diff --git a/src/pas/plugins/authomatic/configure.zcml b/src/pas/plugins/authomatic/configure.zcml index 73d1ae3..76f0f43 100644 --- a/src/pas/plugins/authomatic/configure.zcml +++ b/src/pas/plugins/authomatic/configure.zcml @@ -40,5 +40,9 @@ factory=".useridfactories.ProviderIDUserNameFactory" name="username" /> + diff --git a/src/pas/plugins/authomatic/useridfactories.py b/src/pas/plugins/authomatic/useridfactories.py index 823fe26..41e17ad 100644 --- a/src/pas/plugins/authomatic/useridfactories.py +++ b/src/pas/plugins/authomatic/useridfactories.py @@ -48,3 +48,13 @@ def new_userid(plugin, result): IUserIDFactory, name=settings.userid_factory_name, default=UUID4UserIDFactory() ) return factory(plugin, result) + + +class ProviderIDUserNameIdFactory(BaseUserIDFactory): + title = _("Provider User Name or User ID") + + def __call__(self, plugin, result): + user_id = result.user.username + if not user_id: + user_id = result.user.id + return self.normalize(plugin, result, user_id)