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.Name = data.Name
|
||||||
user.Email = data.Email
|
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)
|
passwordHash, err := helpers.HashPassword(data.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -119,7 +129,7 @@ func UserAdd(c *fiber.Ctx) error {
|
||||||
user.IsAdmin = (c.FormValue("is_admin") == "on")
|
user.IsAdmin = (c.FormValue("is_admin") == "on")
|
||||||
|
|
||||||
if len(errors) == 0 {
|
if len(errors) == 0 {
|
||||||
result := db.Create(&user)
|
result = db.Create(&user)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return result.Error
|
return result.Error
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -191,6 +201,16 @@ func UserEdit(c *fiber.Ctx) error {
|
||||||
user.Name = data.Name
|
user.Name = data.Name
|
||||||
user.Email = data.Email
|
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 {
|
if len(data.Password) > 0 {
|
||||||
passwordHash, err := helpers.HashPassword(data.Password)
|
passwordHash, err := helpers.HashPassword(data.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -207,14 +227,16 @@ func UserEdit(c *fiber.Ctx) error {
|
||||||
|
|
||||||
user.IsAdmin = (c.FormValue("is_admin") == "on")
|
user.IsAdmin = (c.FormValue("is_admin") == "on")
|
||||||
|
|
||||||
var users []models.User
|
if !user.IsAdmin {
|
||||||
result := db.Find(&users, "is_admin = ?", true)
|
var users []models.User
|
||||||
if result.Error != nil {
|
result = db.Find(&users, "is_admin = ? AND id <> ?", true, user.ID)
|
||||||
return result.Error
|
if result.Error != nil {
|
||||||
}
|
return result.Error
|
||||||
|
}
|
||||||
|
|
||||||
if !user.IsAdmin && result.RowsAffected < 2 {
|
if result.RowsAffected < 1 {
|
||||||
errors = append(errors, "Il doit y avoir au moins un administrateur")
|
errors = append(errors, "Il doit y avoir au moins un administrateur")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(errors) == 0 {
|
if len(errors) == 0 {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue