GGGGG
This commit is contained in:
parent
97900074f9
commit
3c6a00b96e
@ -56,7 +56,7 @@ func AdminUserEdit(db *gorm.DB) http.HandlerFunc {
|
|||||||
renderPartial(w, "admin_user_edit", data)
|
renderPartial(w, "admin_user_edit", data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func AdminUserCreate(db *gorm.DB) http.HandlerFunc {
|
func CreateUserHandler(db *gorm.DB) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
if err := r.ParseForm(); err != nil {
|
if err := r.ParseForm(); err != nil {
|
||||||
http.Error(w, "Formulaire invalide", http.StatusBadRequest)
|
http.Error(w, "Formulaire invalide", http.StatusBadRequest)
|
||||||
@ -65,34 +65,53 @@ func AdminUserCreate(db *gorm.DB) http.HandlerFunc {
|
|||||||
|
|
||||||
email := r.FormValue("email")
|
email := r.FormValue("email")
|
||||||
password := r.FormValue("password")
|
password := r.FormValue("password")
|
||||||
role := models.UserRole(r.FormValue("role"))
|
role := r.FormValue("role")
|
||||||
|
monthlyCreditsStr := r.FormValue("monthly_credits")
|
||||||
|
waToken := r.FormValue("whatsapp_token")
|
||||||
|
waPhoneID := r.FormValue("whatsapp_phone_number_id")
|
||||||
|
|
||||||
hashed, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
if email == "" || password == "" {
|
||||||
|
http.Error(w, "Email et mot de passe requis", http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, "Erreur hash", http.StatusInternalServerError)
|
http.Error(w, "Erreur hash mot de passe", http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ssoid := "sso_" + uuid.New().String()
|
monthlyCredits := uint(100)
|
||||||
user := models.User{
|
if monthlyCreditsStr != "" {
|
||||||
|
if val, err := strconv.Atoi(monthlyCreditsStr); err == nil {
|
||||||
|
monthlyCredits = uint(val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
newUser := models.User{
|
||||||
Email: email,
|
Email: email,
|
||||||
Password: string(hashed),
|
Password: string(hashedPassword),
|
||||||
Role: role,
|
Role: models.UserRole(role),
|
||||||
|
SSOID: uuid.New().String(),
|
||||||
IsActive: true,
|
IsActive: true,
|
||||||
SSOID: ssoid,
|
MonthlyCredits: monthlyCredits,
|
||||||
|
CurrentMonthCredits: monthlyCredits,
|
||||||
|
WhatsappToken: waToken,
|
||||||
|
WhatsappPhoneNumberID: waPhoneID,
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := db.Create(&user).Error; err != nil {
|
if err := db.Create(&newUser).Error; err != nil {
|
||||||
http.Error(w, "Erreur enregistrement", http.StatusInternalServerError)
|
http.Error(w, "Erreur lors de la création", http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
w.Header().Set("HX-Trigger", `{"userCreated":"Utilisateur créé avec succès"}`)
|
w.Header().Set("HX-Trigger", "userCreated")
|
||||||
w.Header().Set("HX-Remove", "true") // cache le form
|
w.WriteHeader(http.StatusOK)
|
||||||
renderPartial(w, "admin_user_row", map[string]interface{}{"User": user})
|
w.Write([]byte("<article class='message is-success'><div class='message-body'>Utilisateur créé avec succès.</div></article>"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func AdminUserCreateForm() http.HandlerFunc {
|
func AdminUserCreateForm() http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
renderPartial(w, "admin_user_create", nil)
|
renderPartial(w, "admin_user_create", nil)
|
||||||
|
|||||||
@ -27,12 +27,33 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="field is-grouped">
|
<div class="field">
|
||||||
|
<label class="label">Crédits mensuels</label>
|
||||||
|
<div class="control">
|
||||||
|
<input class="input" type="number" name="monthly_credits" placeholder="100" min="1">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<label class="label">WhatsApp Token</label>
|
||||||
|
<div class="control">
|
||||||
|
<input class="input" type="text" name="whatsapp_token" placeholder="EAAxxxxxxxxxxxxxxxxxx">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<label class="label">Phone Number ID</label>
|
||||||
|
<div class="control">
|
||||||
|
<input class="input" type="text" name="whatsapp_phone_number_id" placeholder="123456789">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field is-grouped mt-4">
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<button class="button is-success" type="submit">✅ Créer</button>
|
<button class="button is-success" type="submit">✅ Créer</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<button type="button" class="button is-light" hx-get="javascript:void(0)" onclick="document.getElementById('createForm').innerHTML = ''">❌ Annuler</button>
|
<button type="button" class="button is-light" onclick="document.getElementById('createForm').innerHTML = ''">❌ Annuler</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user