@@ -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"})
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user