xl,xml,
This commit is contained in:
parent
43c3c53d7f
commit
6bab90e406
@ -539,20 +539,21 @@ func AdminUserDelete(db *gorm.DB) http.HandlerFunc {
|
||||
id := mux.Vars(r)["id"]
|
||||
|
||||
var user models.User
|
||||
if err := db.First(&user, id).Error; err != nil {
|
||||
if err := db.Unscoped().First(&user, id).Error; err != nil {
|
||||
http.Error(w, "Utilisateur introuvable", http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
if err := db.Delete(&user).Error; err != nil {
|
||||
// Suppression définitive
|
||||
if err := db.Unscoped().Delete(&user).Error; err != nil {
|
||||
http.Error(w, "Erreur suppression", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
// On retourne du HTML vide car on swap "outerHTML"
|
||||
w.WriteHeader(http.StatusOK)
|
||||
w.Write([]byte(""))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -18,7 +18,6 @@ type User struct {
|
||||
ID uint `gorm:"primaryKey"`
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
DeletedAt gorm.DeletedAt `gorm:"index"`
|
||||
|
||||
NameClient string `gorm:"not null"`
|
||||
Password string `gorm:"not null"` // hashé avec bcrypt
|
||||
|
||||
@ -137,10 +137,11 @@ func AdminUserEditForm(db *gorm.DB) http.HandlerFunc {
|
||||
}
|
||||
func AdminUserUpdate(db *gorm.DB) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
idStr := mux.Vars(r)["id"]
|
||||
id, err := strconv.Atoi(idStr)
|
||||
if err != nil {
|
||||
http.Error(w, "ID invalide", http.StatusBadRequest)
|
||||
id := mux.Vars(r)["id"]
|
||||
|
||||
var user models.User
|
||||
if err := db.First(&user, id).Error; err != nil {
|
||||
http.Error(w, "Utilisateur introuvable", http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
@ -149,33 +150,50 @@ func AdminUserUpdate(db *gorm.DB) http.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
var user models.User
|
||||
if err := db.First(&user, id).Error; err != nil {
|
||||
http.Error(w, "Utilisateur introuvable", http.StatusNotFound)
|
||||
return
|
||||
email := r.FormValue("email")
|
||||
password := r.FormValue("password")
|
||||
role := r.FormValue("role")
|
||||
isActive := r.FormValue("is_active") == "on"
|
||||
waToken := r.FormValue("whatsapp_token")
|
||||
waPhoneID := r.FormValue("whatsapp_phone_number_id")
|
||||
monthlyCreditsStr := r.FormValue("monthly_credits")
|
||||
|
||||
user.Email = email
|
||||
user.Role = models.UserRole(role)
|
||||
user.IsActive = isActive
|
||||
user.WhatsappToken = waToken
|
||||
user.WhatsappPhoneNumberID = waPhoneID
|
||||
|
||||
if monthlyCreditsStr != "" {
|
||||
if val, err := strconv.Atoi(monthlyCreditsStr); err == nil {
|
||||
user.MonthlyCredits = uint(val)
|
||||
}
|
||||
}
|
||||
|
||||
// Mise à jour des champs
|
||||
user.Email = r.FormValue("email")
|
||||
user.Role = models.UserRole(r.FormValue("role"))
|
||||
user.IsActive = r.FormValue("is_active") == "on"
|
||||
if password != "" {
|
||||
hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
http.Error(w, "Erreur de hachage du mot de passe", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
user.Password = string(hash)
|
||||
}
|
||||
|
||||
if err := db.Save(&user).Error; err != nil {
|
||||
http.Error(w, "Erreur mise à jour", http.StatusInternalServerError)
|
||||
http.Error(w, "Erreur lors de la mise à jour", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
// Réafficher la ligne utilisateur mise à jour
|
||||
data := map[string]interface{}{
|
||||
"User": user,
|
||||
}
|
||||
renderPartial(w, "admin_user_row", data)
|
||||
w.Header().Set("HX-Trigger", "userUpdated")
|
||||
w.WriteHeader(http.StatusOK)
|
||||
w.Write([]byte("<article class='message is-success'><div class='message-body'>Utilisateur mis à jour avec succès.</div></article>"))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
func AdminConversationPage(db *gorm.DB) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
idStr := mux.Vars(r)["id"]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user