diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-07-31 01:49:34 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-07-31 01:49:34 +0900 |
| commit | 7a06def8085b432994dc054037183795e7ec25a0 (patch) | |
| tree | 95456a82897787bac87c350dbc65cad6f35e4ebd /backend/api/handlers.go | |
| parent | 19a75493f5897685cb36c66c7bb3d31ea6a6bd2d (diff) | |
| parent | 5bcffc6a83021b2bcb06b8c6f622a1d623fc753e (diff) | |
| download | phperkaigi-2025-albatross-7a06def8085b432994dc054037183795e7ec25a0.tar.gz phperkaigi-2025-albatross-7a06def8085b432994dc054037183795e7ec25a0.tar.zst phperkaigi-2025-albatross-7a06def8085b432994dc054037183795e7ec25a0.zip | |
Merge branch 'admin'
Diffstat (limited to 'backend/api/handlers.go')
| -rw-r--r-- | backend/api/handlers.go | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/backend/api/handlers.go b/backend/api/handlers.go index 273f68a..b38fd9b 100644 --- a/backend/api/handlers.go +++ b/backend/api/handlers.go @@ -23,6 +23,32 @@ func NewHandler(queries *db.Queries) *ApiHandler { } } +func (h *ApiHandler) GetAdminUsers(ctx context.Context, request GetAdminUsersRequestObject) (GetAdminUsersResponseObject, error) { + user := ctx.Value("user").(*auth.JWTClaims) + if !user.IsAdmin { + return GetAdminUsers403JSONResponse{ + Message: "Forbidden", + }, nil + } + users, err := h.q.ListUsers(ctx) + if err != nil { + return nil, echo.NewHTTPError(http.StatusInternalServerError, err.Error()) + } + responseUsers := make([]User, len(users)) + for i, u := range users { + responseUsers[i] = User{ + UserId: int(u.UserID), + Username: u.Username, + DisplayName: u.DisplayName, + IconPath: u.IconPath, + IsAdmin: u.IsAdmin, + } + } + return GetAdminUsers200JSONResponse{ + Users: responseUsers, + }, nil +} + func (h *ApiHandler) PostLogin(ctx context.Context, request PostLoginRequestObject) (PostLoginResponseObject, error) { username := request.Body.Username password := request.Body.Password @@ -181,15 +207,15 @@ func (h *ApiHandler) GetGamesGameId(ctx context.Context, request GetGamesGameIdR return GetGamesGameId200JSONResponse(game), nil } -func _assertJwtPayloadIsCompatibleWithJWTClaims() { +func _assertUserResponseIsCompatibleWithJWTClaims() { var c auth.JWTClaims - var p JwtPayload - p.UserId = c.UserID - p.Username = c.Username - p.DisplayName = c.DisplayName - p.IconPath = c.IconPath - p.IsAdmin = c.IsAdmin - _ = p + var u User + u.UserId = c.UserID + u.Username = c.Username + u.DisplayName = c.DisplayName + u.IconPath = c.IconPath + u.IsAdmin = c.IsAdmin + _ = u } func setupJWTFromAuthorizationHeader(c echo.Context) error { |
