package router import ( "errors" "git.kocoder.xyz/kocoded/szuntis-backend/middleware" "git.kocoder.xyz/kocoded/szuntis-backend/repository" "github.com/gofiber/fiber/v2" ) type AuthRouter struct { authRepo repository.AuthRepository } func NewAuthRouter(authRepo repository.AuthRepository, authMiddleware middleware.AuthMiddleware, auth fiber.Router) error { router := &AuthRouter{authRepo: authRepo} auth.Post("/login", router.HandleLogin) auth.Post("/register", router.HandleRegister) auth.Get("/username", authMiddleware.IsAuthenticated, router.GetName) return nil } func (ar AuthRouter) GetName(ctx *fiber.Ctx) error { user, ok := ctx.Locals("user").(repository.User) if !ok { return ctx.SendStatus(fiber.StatusUnauthorized) } return ctx.SendString(user.Username) } func (ar AuthRouter) HandleLogin(ctx *fiber.Ctx) error { params := repository.LoginParams{} if err := ctx.BodyParser(¶ms); err != nil { return err } token, err := ar.authRepo.Login(ctx.Context(), ¶ms) if err != nil { return err } cookie := &fiber.Cookie{ Name: "session-token", Value: token.String(), MaxAge: 5, } ctx.Cookie(cookie) return ctx.SendString("Success!!!!!") } func (ar AuthRouter) HandleRegister(ctx *fiber.Ctx) error { params := repository.RegisterParams{} if err := ctx.BodyParser(¶ms); err != nil { return err } ok, err := ar.authRepo.Register(ctx.Context(), ¶ms) if err != nil { return err } if ok { return ctx.SendString("User registered successfully, please check your inbox & proceed to login.") } return errors.New("") }