go-quasar-partial-ssr/backend/internal/middleware/auth.go

37 lines
726 B
Go

package middleware
import (
"server/internal/tokens"
"github.com/gofiber/fiber/v3"
"gorm.io/gorm"
)
func GetAuthClaims(dbConn *gorm.DB, tokenService *tokens.TockenService) fiber.Handler {
return func(c fiber.Ctx) error {
tokenString := c.Get("Auth-Token")
if tokenString == "" {
// missing header
return c.Next()
}
claims, err := tokenService.ValidateAccessToken(tokenString)
if err != nil {
// token not valid
return c.Next()
}
// store claims
c.Locals("authClaims", claims)
return c.Next()
}
}
func AuthMe(c fiber.Ctx) error {
claims := c.Locals("authClaims")
if claims == nil {
return c.Status(fiber.StatusOK).JSON(fiber.Map{
"authenticated": false,
})
}
return c.Next()
}