From bff728234b77dd6ed94ec4cec7255c6042b365f3 Mon Sep 17 00:00:00 2001 From: Piotr Biernat Date: Mon, 20 Oct 2025 17:58:25 +0200 Subject: [PATCH] Added /register handler --- src/internal/server/login_handler.go | 4 +++- src/internal/server/register_handler.go | 23 +++++++++++++++++++++++ src/internal/service/auth.go | 18 ++++++++++++++++-- 3 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 src/internal/server/register_handler.go diff --git a/src/internal/server/login_handler.go b/src/internal/server/login_handler.go index ed5b99c..f14108d 100644 --- a/src/internal/server/login_handler.go +++ b/src/internal/server/login_handler.go @@ -12,7 +12,9 @@ func (s *Server) LoginHandlerFn(c *fiber.Ctx) error { return s.Error(c, fiber.StatusBadRequest, "Error parsing input") } - token, err := service.AuthService.Login(data.Username, data.Password) + authSrv := service.NewAuthService(s.GetDatabase()) + + token, err := authSrv.Login(data.Username, data.Password) if err != nil { return fiber.NewError(fiber.StatusUnauthorized) } diff --git a/src/internal/server/register_handler.go b/src/internal/server/register_handler.go new file mode 100644 index 0000000..419d167 --- /dev/null +++ b/src/internal/server/register_handler.go @@ -0,0 +1,23 @@ +package server + +import ( + dto "git.ego.freeddns.org/egommerce/api-entities/identity/dto" + "git.ego.freeddns.org/egommerce/identity-service/internal/service" + "github.com/gofiber/fiber/v2" +) + +func (s *Server) RegisterHandlerFn(c *fiber.Ctx) error { + data := new(dto.AuthRegisterRequestDTO) + if err := c.BodyParser(data); err != nil { + return s.Error(c, fiber.StatusBadRequest, "Error parsing input") + } + + authSrv := service.NewAuthService(s.GetDatabase()) + + id, err := authSrv.Register(data.Email, data.Username, data.Password) + if err != nil { + return s.Error(c, fiber.StatusBadRequest, err.Error()) + } + + return c.JSON(&dto.AuthRegisterResponseDTO{ID: id}) +} diff --git a/src/internal/service/auth.go b/src/internal/service/auth.go index e9a162c..d56e111 100644 --- a/src/internal/service/auth.go +++ b/src/internal/service/auth.go @@ -1,7 +1,10 @@ package service import ( + "context" "errors" + + "github.com/jackc/pgx/v5/pgxpool" ) var ( @@ -12,10 +15,14 @@ var ( ) func init() { - AuthService = &Auth{} } type Auth struct { + db *pgxpool.Pool +} + +func NewAuthService(db *pgxpool.Pool) *Auth { + return &Auth{db: db} } func (a *Auth) Login(login, passwd string) (string, error) { @@ -32,6 +39,13 @@ func (a *Auth) Login(login, passwd string) (string, error) { } func (a *Auth) Register(email, login, passwd string) (string, error) { + var id string - return "user-uuid", nil + sql := `INSERT INTO identity.users(email, username, password) VALUES($1, $2, $3) LIMIT 1 RETURNING id` + err := a.db.QueryRow(context.Background(), sql, email, login, passwd).Scan(&id) + if err != nil { + return "", errors.New("Failed to create new user: " + err.Error()) + } + + return id, nil }