Skip to content

Commit c2cbeda

Browse files
authored
Merge pull request jupyterhub#3714 from team-monolith-product/main
Grant role after user creation during config load
2 parents 04ac02c + 92a33bd commit c2cbeda

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

jupyterhub/app.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1993,6 +1993,7 @@ async def _get_or_create_user(self, username):
19931993
self.log.info(f"Creating user {username}")
19941994
user = orm.User(name=username)
19951995
self.db.add(user)
1996+
roles.assign_default_roles(self.db, entity=user)
19961997
self.db.commit()
19971998
return user
19981999

jupyterhub/tests/test_app.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ async def test_load_groups(tmpdir, request):
247247
kwargs['internal_certs_location'] = str(tmpdir)
248248
hub = MockHub(**kwargs)
249249
hub.init_db()
250+
await hub.init_role_creation()
250251
await hub.init_users()
251252
await hub.init_groups()
252253
db = hub.db

jupyterhub/tests/test_roles.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,6 +1203,27 @@ async def test_user_config_respects_memberships():
12031203
assert user in user_role.users
12041204

12051205

1206+
async def test_user_config_creates_default_role():
1207+
role_spec = [
1208+
{
1209+
'name': 'new-role',
1210+
'scopes': ['read:users'],
1211+
'users': ['not-yet-created-user'],
1212+
}
1213+
]
1214+
user_names = []
1215+
hub = MockHub(load_roles=role_spec)
1216+
hub.init_db()
1217+
hub.authenticator.allowed_users = user_names
1218+
await hub.init_role_creation()
1219+
await hub.init_users()
1220+
await hub.init_role_assignment()
1221+
user_role = orm.Role.find(hub.db, 'user')
1222+
new_role = orm.Role.find(hub.db, 'new-role')
1223+
assert orm.User.find(hub.db, 'not-yet-created-user') in new_role.users
1224+
assert orm.User.find(hub.db, 'not-yet-created-user') in user_role.users
1225+
1226+
12061227
async def test_admin_role_respects_config():
12071228
role_spec = [
12081229
{

0 commit comments

Comments
 (0)