Skip to content

Commit 7468b8f

Browse files
committed
Fixes according to previos test cases
1 parent 9415afb commit 7468b8f

3 files changed

Lines changed: 21 additions & 7 deletions

File tree

brood/actions.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,14 @@ def get_token(session: Session, token: uuid.UUID) -> Token:
10841084
return token_object
10851085

10861086

1087+
def get_tokens(session: Session, user_id: uuid.UUID) -> List[Token]:
1088+
"""
1089+
Retrieve the list of tokens for user.
1090+
"""
1091+
objects = session.query(Token).filter(Token.user_id == user_id).all()
1092+
return objects
1093+
1094+
10871095
def update_token(
10881096
session: Session,
10891097
token: uuid.UUID,

brood/api.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ async def get_tokens_handler(
340340
active: bool = Query(None),
341341
token_type: models.TokenType = Query(None),
342342
restricted: bool = Query(None),
343+
db_session=Depends(yield_db_session_from_env),
343344
) -> Dict[str, Any]:
344345
"""
345346
Get list of tokens for current user.
@@ -354,7 +355,7 @@ async def get_tokens_handler(
354355
detail="Restricted tokens are not authorized to list user tokens.",
355356
)
356357

357-
tokens = current_user.tokens
358+
tokens = actions.get_tokens(session=db_session, user_id=current_user.id)
358359
if active is not None:
359360
tokens = list(filter(lambda token: token.active == active, tokens))
360361
if token_type is not None:

brood/middleware.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,9 @@ async def get_current_user_with_groups(
193193

194194

195195
def autogenerated_user_token_check(request: Request) -> bool:
196+
"""
197+
Checks installation token header for autogenerated user access.
198+
"""
196199
if BOT_INSTALLATION_TOKEN is None:
197200
raise ValueError("BOT_INSTALLATION_TOKEN environment variable must be set")
198201

@@ -224,17 +227,18 @@ async def get_current_user_or_installation(
224227
"""
225228
Allow access if Bugout installation token provided, if not
226229
check user by default.
230+
231+
Because of oauth2_scheme_manual we could accept None bearer token.
227232
"""
228-
token = oauth2[0]
229233
scheme = oauth2[1]
230-
if scheme != "bearer":
234+
if scheme != "bearer" and scheme is not None:
231235
raise HTTPException(status_code=400, detail="Unaccepted scheme")
232236

233237
autogenerated_user = autogenerated_user_token_check(request)
234238
if autogenerated_user is True:
235239
return True
236240
elif autogenerated_user is False:
237-
user = await get_current_user(token, db_session)
241+
user = await get_current_user(oauth2, db_session)
238242
return user
239243

240244
raise HTTPException(status_code=400, detail="Access denied")
@@ -247,17 +251,18 @@ async def is_token_restricted_or_installation(
247251
) -> bool:
248252
"""
249253
Allow access if Bugout installation provided.
254+
255+
Because of oauth2_scheme_manual we could accept None bearer token.
250256
"""
251-
token = oauth2[0]
252257
scheme = oauth2[1]
253-
if scheme != "bearer":
258+
if scheme != "bearer" and scheme is not None:
254259
raise HTTPException(status_code=400, detail="Unaccepted scheme")
255260

256261
autogenerated_user = autogenerated_user_token_check(request)
257262
if autogenerated_user is True:
258263
return False # Return token.restricted = False
259264
elif autogenerated_user is False:
260-
token_restricted = await is_token_restricted(token, db_session)
265+
token_restricted = await is_token_restricted(oauth2, db_session)
261266
return token_restricted
262267

263268
raise HTTPException(status_code=400, detail="Access denied")

0 commit comments

Comments
 (0)