szuntis-backend/middleware/auth.go
KoCoder 1e41dd833f
Some checks failed
build-docker-imge / Build the docker container (push) Failing after 2m24s
Experiment with Authentication and Websockets
2024-08-27 18:20:17 +02:00

42 lines
831 B
Go

package middleware
import (
"fmt"
"git.kocoder.xyz/kocoded/szuntis-backend/repository"
"github.com/gofiber/fiber/v2"
"github.com/google/uuid"
)
type AuthMiddleware struct {
ar repository.AuthRepository
}
func NewAuthMiddleware(ar repository.AuthRepository) AuthMiddleware {
return AuthMiddleware{
ar: ar,
}
}
func (am AuthMiddleware) IsAuthenticated(ctx *fiber.Ctx) error {
val := ctx.Cookies("session-token")
if val == "" {
fmt.Println(1)
return ctx.SendStatus(fiber.StatusUnauthorized)
}
token, err := uuid.Parse(val)
if err != nil {
fmt.Println(2)
return ctx.SendStatus(fiber.StatusUnauthorized)
}
u, err := am.ar.GetUserByToken(ctx.Context(), token)
if err != nil {
fmt.Println(3)
return ctx.SendStatus(fiber.StatusUnauthorized)
}
fmt.Println(4)
ctx.Locals("user", u)
return ctx.Next()
}