Skip to content

Commit 6351ce8

Browse files
committed
Provide a dots oidc claim for online badges. Commit ready for merge.
- Legacy-Id: 19437
1 parent cd748cd commit 6351ce8

3 files changed

Lines changed: 27 additions & 2 deletions

File tree

ietf/ietfauth/tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ def test_oidc_code_auth(self):
827827
session["nonce"] = rndstr()
828828
args = {
829829
"response_type": "code",
830-
"scope": ['openid', 'profile', 'email', 'roles', 'registration', ],
830+
"scope": ['openid', 'profile', 'email', 'roles', 'registration', 'dots' ],
831831
"nonce": session["nonce"],
832832
"redirect_uri": redirect_uris[0],
833833
"state": session["state"]
@@ -876,7 +876,7 @@ def test_oidc_code_auth(self):
876876
# Get userinfo, check keys present
877877
userinfo = client.do_user_info_request(state=params["state"], scope=args['scope'])
878878
for key in [ 'email', 'family_name', 'given_name', 'meeting', 'name', 'roles',
879-
'ticket_type', 'reg_type', 'affiliation', 'picture', ]:
879+
'ticket_type', 'reg_type', 'affiliation', 'picture', 'dots', ]:
880880
self.assertIn(key, userinfo)
881881
self.assertTrue(userinfo[key])
882882
self.assertIn('remote', set(userinfo['reg_type'].split()))

ietf/ietfauth/utils.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
from ietf.group.models import Role, GroupFeatures
2727
from ietf.person.models import Person
28+
from ietf.person.utils import get_dots
2829
from ietf.doc.utils_bofreq import bofreq_editors
2930

3031
def user_is_person(user, person):
@@ -253,6 +254,10 @@ def scope_roles(self):
253254
}
254255
return info
255256

257+
def scope_dots(self):
258+
dots = get_dots(self.user.person)
259+
return { 'dots': dots }
260+
256261
info_registration = (
257262
"IETF Meeting Registration Info",
258263
"Access to public IETF meeting registration information for the current meeting. "

ietf/person/utils.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import debug # pyflakes:ignore
1616

1717
from ietf.person.models import Person
18+
from ietf.group.models import GroupFeatures
1819
from ietf.utils.mail import send_mail
1920

2021
def merge_persons(request, source, target, file=sys.stdout, verbose=False):
@@ -220,3 +221,22 @@ def get_active_irsg():
220221
cache.set(cache_key, active_irsg_balloters)
221222
return active_irsg_balloters
222223

224+
def get_dots(person):
225+
roles = person.role_set.filter(group__state_id__in=('active','bof','proposed'))
226+
chair_group_types = ['wg', 'program', 'rg', 'iabasg']
227+
dots = []
228+
if roles.filter(name_id='chair',group__type_id__in=chair_group_types).exists():
229+
dots.append('chair')
230+
if roles.filter(group__acronym='iesg',name_id='ad').exists():
231+
dots.append('ad')
232+
if roles.filter(group__acronym='iab',name_id='member').exists():
233+
dots.append('iab')
234+
if roles.filter(group__acronym='irsg').exists():
235+
dots.append('irsg')
236+
if roles.filter(group__acronym='llc-board').exists():
237+
dots.append('llc')
238+
if roles.filter(group__acronym='ietf-trust').exists():
239+
dots.append('trust')
240+
if roles.filter(group__acronym__startswith='nomcom', name_id__in=('chair','member')).exists():
241+
dots.append('nomcom')
242+
return dots

0 commit comments

Comments
 (0)