From f8c413a4983ea2582bd0e414307567cd4eede721 Mon Sep 17 00:00:00 2001 From: d3m0k1d Date: Sat, 4 Apr 2026 20:08:45 +0300 Subject: [PATCH] fix: reg --- backend/internal/handlers/auth.go | 18 +++++++++++------- backend/internal/repository/repository.go | 11 +++++++---- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/backend/internal/handlers/auth.go b/backend/internal/handlers/auth.go index 621e80d..dc39310 100644 --- a/backend/internal/handlers/auth.go +++ b/backend/internal/handlers/auth.go @@ -2,6 +2,8 @@ package handlers import ( "errors" + "fmt" + "log" "net/http" "strings" @@ -67,16 +69,18 @@ func (ag *AuthGroup) RegisterUser(c *gin.Context) { return } - if ag.Repo.ExistsByLogin(req.Login) { - c.JSON(http.StatusConflict, gin.H{"error": "login already exists"}) - return - } - - if _, err := ag.Repo.RegisterUser(req); err != nil { - c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to register user"}) + id, err := ag.Repo.RegisterUser(req) + if err != nil { + if strings.Contains(err.Error(), "UNIQUE constraint") { + c.JSON(http.StatusConflict, gin.H{"error": "login already exists"}) + return + } + log.Printf("[register] failed: %v", err) + c.JSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("failed to register user: %v", err)}) return } + log.Printf("[register] user registered: id=%s login=%s", id, req.Login) c.JSON(http.StatusOK, gin.H{"message": "user registered"}) } diff --git a/backend/internal/repository/repository.go b/backend/internal/repository/repository.go index 6eaa524..187f087 100644 --- a/backend/internal/repository/repository.go +++ b/backend/internal/repository/repository.go @@ -3,6 +3,8 @@ package repository import ( "database/sql" "errors" + "fmt" + "log" "strconv" "gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/storage" @@ -75,12 +77,12 @@ func (r *Repository) CreateToken(tc TokenCreate) (string, error) { func (r *Repository) RegisterUser(ur UserRegister) (string, error) { hashed, err := bcrypt.GenerateFromPassword([]byte(ur.Password), bcrypt.DefaultCost) if err != nil { - return "", err + return "", fmt.Errorf("hash password: %w", err) } token, err := utils.RandomToken() if err != nil { - return "", err + return "", fmt.Errorf("generate token: %w", err) } result, err := r.DB.Exec( @@ -93,13 +95,14 @@ func (r *Repository) RegisterUser(ur UserRegister) (string, error) { token, ) if err != nil { - return "", err + return "", fmt.Errorf("insert user: %w", err) } id, err := result.LastInsertId() if err != nil { - return "", err + return "", fmt.Errorf("get last insert id: %w", err) } + log.Printf("[register] user created: id=%s login=%s", strconv.FormatInt(id, 10), ur.Login) return strconv.FormatInt(id, 10), nil }