@@ -2,6 +2,8 @@ package handlers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@@ -67,16 +69,18 @@ func (ag *AuthGroup) RegisterUser(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if ag.Repo.ExistsByLogin(req.Login) {
|
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"})
|
c.JSON(http.StatusConflict, gin.H{"error": "login already exists"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
log.Printf("[register] failed: %v", err)
|
||||||
if _, err := ag.Repo.RegisterUser(req); err != nil {
|
c.JSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("failed to register user: %v", err)})
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to register user"})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Printf("[register] user registered: id=%s login=%s", id, req.Login)
|
||||||
c.JSON(http.StatusOK, gin.H{"message": "user registered"})
|
c.JSON(http.StatusOK, gin.H{"message": "user registered"})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package repository
|
|||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"gitea.d3m0k1d.ru/d3m0k1d/HellreigN/backend/internal/storage"
|
"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) {
|
func (r *Repository) RegisterUser(ur UserRegister) (string, error) {
|
||||||
hashed, err := bcrypt.GenerateFromPassword([]byte(ur.Password), bcrypt.DefaultCost)
|
hashed, err := bcrypt.GenerateFromPassword([]byte(ur.Password), bcrypt.DefaultCost)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", fmt.Errorf("hash password: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
token, err := utils.RandomToken()
|
token, err := utils.RandomToken()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", fmt.Errorf("generate token: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err := r.DB.Exec(
|
result, err := r.DB.Exec(
|
||||||
@@ -93,13 +95,14 @@ func (r *Repository) RegisterUser(ur UserRegister) (string, error) {
|
|||||||
token,
|
token,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", fmt.Errorf("insert user: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
id, err := result.LastInsertId()
|
id, err := result.LastInsertId()
|
||||||
if err != nil {
|
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
|
return strconv.FormatInt(id, 10), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user