aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/api/handlers.go
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-07-29 20:04:03 +0900
committernsfisis <nsfisis@gmail.com>2024-07-29 20:04:09 +0900
commit648613e24c8afe5fd3c599def61b33ccf7bcb96c (patch)
treef368aa1ef1d734d3096c9129e17d6af11d1041a6 /backend/api/handlers.go
parentd73fd8bf5bf589a4a391c867e980761fadb647ce (diff)
downloadiosdc-japan-2024-albatross-648613e24c8afe5fd3c599def61b33ccf7bcb96c.tar.gz
iosdc-japan-2024-albatross-648613e24c8afe5fd3c599def61b33ccf7bcb96c.tar.zst
iosdc-japan-2024-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.go24
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" {