Commit e04c6c2a by Carlos Andrés Rocha

Merge pull request #5315 from rocha/fix-fullname-in-oauth2-handler

Return OpenID Connect user name from user profile.
parents c9357985 19f95f00
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
import branding import branding
from courseware.access import has_access from courseware.access import has_access
from student.models import anonymous_id_for_user from student.models import anonymous_id_for_user
from student.models import UserProfile
from user_api.models import UserPreference from user_api.models import UserPreference
from lang_pref import LANGUAGE_KEY from lang_pref import LANGUAGE_KEY
...@@ -33,8 +34,14 @@ class ProfileHandler(object): ...@@ -33,8 +34,14 @@ class ProfileHandler(object):
""" Basic OpenID Connect `profile` scope handler with `locale` claim. """ """ Basic OpenID Connect `profile` scope handler with `locale` claim. """
def scope_profile(self, _data): def scope_profile(self, _data):
""" Add the locale claim. """ """ Add specialized claims. """
return ['locale'] return ['name', 'locale']
def claim_name(self, data):
""" User displayable full name. """
user = data['user']
profile = UserProfile.objects.get(user=user)
return profile.name
def claim_locale(self, data): def claim_locale(self, data):
""" """
......
...@@ -6,6 +6,7 @@ from courseware.tests.tests import TEST_DATA_MIXED_MODULESTORE ...@@ -6,6 +6,7 @@ from courseware.tests.tests import TEST_DATA_MIXED_MODULESTORE
from lang_pref import LANGUAGE_KEY from lang_pref import LANGUAGE_KEY
from opaque_keys.edx.locations import SlashSeparatedCourseKey from opaque_keys.edx.locations import SlashSeparatedCourseKey
from student.models import anonymous_id_for_user from student.models import anonymous_id_for_user
from student.models import UserProfile
from student.roles import CourseStaffRole, CourseInstructorRole from student.roles import CourseStaffRole, CourseInstructorRole
from student.tests.factories import UserFactory, UserProfileFactory from student.tests.factories import UserFactory, UserProfileFactory
from user_api.models import UserPreference from user_api.models import UserPreference
...@@ -42,6 +43,15 @@ class IDTokenTest(BaseTestMixin, IDTokenTestCase): ...@@ -42,6 +43,15 @@ class IDTokenTest(BaseTestMixin, IDTokenTestCase):
expected_sub = anonymous_id_for_user(self.user, None) expected_sub = anonymous_id_for_user(self.user, None)
self.assertEqual(sub, expected_sub) self.assertEqual(sub, expected_sub)
def test_user_name_claim(self):
_scopes, claims = self.get_new_id_token_values('openid profile')
claim_name = claims['name']
user_profile = UserProfile.objects.get(user=self.user)
user_name = user_profile.name
self.assertEqual(claim_name, user_name)
def test_user_without_locale_claim(self): def test_user_without_locale_claim(self):
scopes, claims = self.get_new_id_token_values('openid profile') scopes, claims = self.get_new_id_token_values('openid profile')
self.assertIn('profile', scopes) self.assertIn('profile', scopes)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment