From cfcda815f3bd7b9a4d61ca297d148983dbee6027 Mon Sep 17 00:00:00 2001 From: Tomas Tomecek Date: Oct 13 2021 11:15:58 +0000 Subject: openid,login: utilize actual username when logged using email Fixes: https://pagure.io/ipsilon/issue/358 Signed-off-by: Tomas Tomecek --- diff --git a/ipsilon/providers/openid/auth.py b/ipsilon/providers/openid/auth.py index 1a1ef20..417c25d 100644 --- a/ipsilon/providers/openid/auth.py +++ b/ipsilon/providers/openid/auth.py @@ -212,8 +212,11 @@ class AuthenticateRequest(ProviderPageBase): return self._template('openid/consent_form.html', **context) def _response(self, request, session): - user = session.get_user() - identity_url = self.cfg.identity_url_template % {'username': user.name} + # we could use `session.get_user().name` here but when authenticated + # via email, .name corresponds to email instead of an actual username + # https://pagure.io/ipsilon/issue/358 + userattrs = session.get_user_attrs() + identity_url = self.cfg.identity_url_template % {'username': userattrs['_username']} response = request.answer( True, identity=identity_url, diff --git a/ipsilon/util/user.py b/ipsilon/util/user.py index 1b7b9af..bb610ab 100644 --- a/ipsilon/util/user.py +++ b/ipsilon/util/user.py @@ -21,6 +21,7 @@ class User(object): self._userdata = dict() else: self._userdata = self._get_user_data(username) + # username can be an email, https://pagure.io/ipsilon/issue/358 self.name = username def _get_user_data(self, username):