Added some normalisation of the reg_type and ticket_type entries in the OIDC registration scope.

- Legacy-Id: 18301
This commit is contained in:
Henrik Levkowetz 2020-07-28 21:04:28 +00:00
parent 5d296775ca
commit 8ac37a3f51
2 changed files with 17 additions and 2 deletions

View file

@ -847,6 +847,14 @@ class OpenIDConnectTests(TestCase):
self.assertIn('full_week', set(userinfo['ticket_type'].split()))
self.assertIn('Some Company', userinfo['affiliation'])
# Create a third registration, with a composite reg type
MeetingRegistration.objects.create(
meeting=meeting, person=None, first_name=person.first_name(), last_name=person.last_name(),
email=email_list[1], ticket_type='one_day', reg_type='hackathon remote', affiliation='Some Company, Inc',
)
userinfo = client.do_user_info_request(state=params["state"], scope=args['scope'])
self.assertEqual(set(userinfo['reg_type'].split()), set(['remote', 'hackathon']))
# Check that ending a session works
r = client.do_end_session_request(state=params["state"], scope=args['scope'])
self.assertEqual(r.status_code, 302)

View file

@ -268,12 +268,19 @@ class OidcExtraScopeClaims(oidc_provider.lib.claims.ScopeClaims):
reg.attended = True
reg.save()
# fill in info to return
ticket_types = set([])
reg_types = set([])
for reg in regs:
for t in reg.ticket_type.split():
ticket_types.add(t)
for r in reg.reg_type.split():
reg_types.add(r)
info = {
'meeting': meeting.number,
# full_week, one_day, student:
'ticket_type': ' '.join(set( reg.ticket_type for reg in regs )),
'ticket_type': ' '.join(ticket_types),
# in_person, onliine, hackathon:
'reg_type': ' '.join(set( reg.reg_type for reg in regs )),
'reg_type': ' '.join(reg_types),
'affiliation': ([ reg.affiliation for reg in regs if reg.affiliation ] or [''])[0],
}