You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Koito/engine/handlers/lbz_validate.go

45 lines
1.3 KiB

package handlers
import (
"net/http"
"github.com/gabehf/koito/engine/middleware"
"github.com/gabehf/koito/internal/db"
"github.com/gabehf/koito/internal/logger"
"github.com/gabehf/koito/internal/utils"
)
type LbzValidateResponse struct {
Code int `json:"code"`
Error string `json:"error,omitempty"`
Message string `json:"message,omitempty"`
Valid bool `json:"valid,omitempty"`
UserName string `json:"user_name,omitempty"`
}
func LbzValidateTokenHandler(store db.DB) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
l := logger.FromContext(ctx)
l.Debug().Msg("LbzValidateTokenHandler: Validating user token")
u := middleware.GetUserFromContext(ctx)
var response LbzValidateResponse
if u == nil {
l.Debug().Msg("LbzValidateTokenHandler: Invalid token, user not found in context")
response.Code = http.StatusUnauthorized
response.Error = "Incorrect Authorization"
w.WriteHeader(http.StatusUnauthorized)
utils.WriteJSON(w, http.StatusOK, response)
} else {
l.Debug().Msgf("LbzValidateTokenHandler: Token valid for user '%s'", u.Username)
response.Code = http.StatusOK
response.Message = "Token valid."
response.Valid = true
response.UserName = u.Username
utils.WriteJSON(w, http.StatusOK, response)
}
}
}