diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-07-29 20:04:03 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-07-29 20:04:09 +0900 |
| commit | 648613e24c8afe5fd3c599def61b33ccf7bcb96c (patch) | |
| tree | f368aa1ef1d734d3096c9129e17d6af11d1041a6 /backend/api/handlers.go | |
| parent | d73fd8bf5bf589a4a391c867e980761fadb647ce (diff) | |
| download | iosdc-japan-2025-albatross-648613e24c8afe5fd3c599def61b33ccf7bcb96c.tar.gz iosdc-japan-2025-albatross-648613e24c8afe5fd3c599def61b33ccf7bcb96c.tar.zst iosdc-japan-2025-albatross-648613e24c8afe5fd3c599def61b33ccf7bcb96c.zip | |
feat: authenticate WebSocket connection by short-lived access token
Diffstat (limited to 'backend/api/handlers.go')
| -rw-r--r-- | backend/api/handlers.go | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/backend/api/handlers.go b/backend/api/handlers.go index f50558d..c4810a0 100644 --- a/backend/api/handlers.go +++ b/backend/api/handlers.go @@ -50,6 +50,17 @@ func (h *ApiHandler) PostLogin(ctx context.Context, request PostLoginRequestObje }, nil } +func (h *ApiHandler) GetToken(ctx context.Context, request GetTokenRequestObject) (GetTokenResponseObject, error) { + user := ctx.Value("user").(*auth.JWTClaims) + newToken, err := auth.NewShortLivedJWT(user) + if err != nil { + return nil, echo.NewHTTPError(http.StatusInternalServerError, err.Error()) + } + return GetToken200JSONResponse{ + Token: newToken, + }, nil +} + func (h *ApiHandler) GetGames(ctx context.Context, request GetGamesRequestObject) (GetGamesResponseObject, error) { user := ctx.Value("user").(*auth.JWTClaims) playerId := request.Params.PlayerId @@ -190,23 +201,10 @@ func setupJWTFromAuthorizationHeader(c echo.Context) error { if err != nil { return echo.NewHTTPError(http.StatusUnauthorized, err.Error()) } - c.Set("user", claims) c.SetRequest(c.Request().WithContext(context.WithValue(c.Request().Context(), "user", claims))) return nil } -func NewEchoJWTMiddleware() echo.MiddlewareFunc { - return func(next echo.HandlerFunc) echo.HandlerFunc { - return func(c echo.Context) error { - err := setupJWTFromAuthorizationHeader(c) - if err != nil { - return echo.NewHTTPError(http.StatusUnauthorized, err.Error()) - } - return next(c) - } - } -} - func NewJWTMiddleware() StrictMiddlewareFunc { return func(handler StrictHandlerFunc, operationID string) StrictHandlerFunc { if operationID == "PostLogin" { |
