Check if email already exists & fix last admin check

This commit is contained in:
William Bouzourène 2025-01-03 16:21:40 +01:00
parent 420cfd5c9d
commit 89c1633389
Signed by: bouzoure
SSH key fingerprint: SHA256:19MbXpLua4rUtk8tunMesD8KUKb91LXLHg8E/qTooww

View file

@ -108,6 +108,16 @@ func UserAdd(c *fiber.Ctx) error {
user.Name = data.Name
user.Email = data.Email
var usersEmail []models.User
result := db.Find(&usersEmail, "email = ?", user.Email)
if result.Error != nil {
return result.Error
}
if result.RowsAffected > 0 {
errors = append(errors, "L'adresse email est déjà utilisée par un autre utilisateur")
}
passwordHash, err := helpers.HashPassword(data.Password)
if err != nil {
return err
@ -119,7 +129,7 @@ func UserAdd(c *fiber.Ctx) error {
user.IsAdmin = (c.FormValue("is_admin") == "on")
if len(errors) == 0 {
result := db.Create(&user)
result = db.Create(&user)
if result.Error != nil {
return result.Error
} else {
@ -191,6 +201,16 @@ func UserEdit(c *fiber.Ctx) error {
user.Name = data.Name
user.Email = data.Email
var usersEmail []models.User
result := db.Find(&usersEmail, "email = ? AND id <> ?", user.Email, user.ID)
if result.Error != nil {
return result.Error
}
if result.RowsAffected > 0 {
errors = append(errors, "L'adresse email est déjà utilisée par un autre utilisateur")
}
if len(data.Password) > 0 {
passwordHash, err := helpers.HashPassword(data.Password)
if err != nil {
@ -207,14 +227,16 @@ func UserEdit(c *fiber.Ctx) error {
user.IsAdmin = (c.FormValue("is_admin") == "on")
var users []models.User
result := db.Find(&users, "is_admin = ?", true)
if result.Error != nil {
return result.Error
}
if !user.IsAdmin {
var users []models.User
result = db.Find(&users, "is_admin = ? AND id <> ?", true, user.ID)
if result.Error != nil {
return result.Error
}
if !user.IsAdmin && result.RowsAffected < 2 {
errors = append(errors, "Il doit y avoir au moins un administrateur")
if result.RowsAffected < 1 {
errors = append(errors, "Il doit y avoir au moins un administrateur")
}
}
if len(errors) == 0 {