|
12 | 12 | from bracket.database import database |
13 | 13 | from bracket.models.db.tournament import Tournament |
14 | 14 | from bracket.models.db.user import UserInDB, UserPublic |
| 15 | +from bracket.models.db.account import UserAccountType |
15 | 16 | from bracket.schema import tournaments |
16 | 17 | from bracket.sql.tournaments import sql_get_tournament_by_endpoint_name |
17 | 18 | from bracket.sql.users import get_user, get_user_access_to_club, get_user_access_to_tournament |
@@ -97,6 +98,24 @@ async def user_authenticated(token: str = Depends(oauth2_scheme)) -> UserPublic: |
97 | 98 |
|
98 | 99 | return UserPublic.model_validate(user.model_dump()) |
99 | 100 |
|
| 101 | +async def user_is_admin(token: str = Depends(oauth2_scheme)) -> UserPublic: |
| 102 | + user = await check_jwt_and_get_user(token) |
| 103 | + if not user: |
| 104 | + raise HTTPException( |
| 105 | + status_code=status.HTTP_401_UNAUTHORIZED, |
| 106 | + detail="Could not validate credentials", |
| 107 | + headers={"WWW-Authenticate": "Bearer"}, |
| 108 | + ) |
| 109 | + |
| 110 | + if user.account_type != UserAccountType.ADMIN: |
| 111 | + raise HTTPException( |
| 112 | + status_code=status.HTTP_403_FORBIDDEN, |
| 113 | + detail="You do not have enough privileges", |
| 114 | + headers={"WWW-Authenticate": "Bearer"}, |
| 115 | + ) |
| 116 | + |
| 117 | + return UserPublic.model_validate(user.model_dump()) |
| 118 | + |
100 | 119 |
|
101 | 120 | async def user_authenticated_for_tournament( |
102 | 121 | tournament_id: TournamentId, token: str = Depends(oauth2_scheme) |
|
0 commit comments