Skip to content

Commit 79d5cc7

Browse files
committed
Give blueshirts another auth scope
1 parent d219806 commit 79d5cc7

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

code_submitter/auth.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,14 @@ def get_team(self, info: NemesisUserInfo) -> Optional[str]:
150150

151151
return team
152152

153+
def get_scopes(self, info: NemesisUserInfo) -> List[str]:
154+
scopes = ['authenticated']
155+
156+
if info['is_blueshirt']:
157+
scopes.append('blueshirt')
158+
159+
return scopes
160+
153161
async def validate(self, username: str, password: str) -> ValidationResult:
154162
if not username:
155163
raise AuthenticationError("Must provide a username")
@@ -159,8 +167,9 @@ async def validate(self, username: str, password: str) -> ValidationResult:
159167
info = await self.load_user(username, password)
160168

161169
team = self.get_team(info)
170+
scopes = self.get_scopes(info)
162171

163-
return ['authenticated'], User(username, team)
172+
return scopes, User(username, team)
164173

165174

166175
class DummyNemesisBackend(NemesisBackend):

tests/tests_auth.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,21 @@ async def endpoint(request: Request) -> Response:
7474
self.assertEqual('user', user.username, "Wrong username for user")
7575

7676
self.assertEqual(['authenticated'], scopes, "Wrong scopes for user")
77+
78+
def test_blueshirt(self) -> None:
79+
@self.fake_nemesis.route('/user/user')
80+
async def endpoint(request: Request) -> Response:
81+
self.info['teams'] = []
82+
self.info['is_blueshirt'] = True
83+
return JSONResponse(self.info)
84+
85+
scopes, user = self.await_(self.backend.validate('user', 'pass'))
86+
87+
self.assertIsNone(user.team, "Wrong team for user")
88+
self.assertEqual('user', user.username, "Wrong username for user")
89+
90+
self.assertEqual(
91+
['authenticated', 'blueshirt'],
92+
scopes,
93+
"Wrong scopes for user",
94+
)

0 commit comments

Comments
 (0)