Check if email already exists & fix last admin check
This commit is contained in:
parent
1705ac7353
commit
91300d957b
1 changed files with 30 additions and 8 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue