34 lines
770 B
Go
34 lines
770 B
Go
package server
|
|
|
|
import (
|
|
"git.pbiernat.io/egommerce/identity-service/internal/service"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type AuthLoginRequest struct {
|
|
Username string `json:"username"`
|
|
Password string `json:"password"`
|
|
}
|
|
|
|
type AuthLoginResponse struct {
|
|
JWTToken string `json:"jwt_token"`
|
|
}
|
|
|
|
func (s *Server) LoginHandler(c *fiber.Ctx) error {
|
|
data := new(AuthLoginRequest)
|
|
if err := c.BodyParser(data); err != nil {
|
|
return err
|
|
}
|
|
|
|
token, err := service.AuthService.Login(data.Username, data.Password)
|
|
if err != nil {
|
|
return fiber.NewError(fiber.StatusUnauthorized)
|
|
}
|
|
|
|
cookie := service.AuthService.Cookie("auth_token", token)
|
|
// ^^ FIXME move cookkie creation to separate service
|
|
c.Cookie(cookie)
|
|
|
|
return c.JSON(&AuthLoginResponse{JWTToken: token})
|
|
}
|