djdjdkkd
This commit is contained in:
parent
5cecc910b1
commit
5c8cce231d
@ -93,81 +93,7 @@ func SSOLoginHandler(db *gorm.DB) http.HandlerFunc {
|
|||||||
http.Redirect(w, r, "/dashboard", http.StatusSeeOther)
|
http.Redirect(w, r, "/dashboard", http.StatusSeeOther)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func SendWhatsAppMessage(db *gorm.DB) http.HandlerFunc {
|
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
val := r.Context().Value("ssoid")
|
|
||||||
ssoid, ok := val.(string)
|
|
||||||
if !ok || ssoid == "" {
|
|
||||||
http.Error(w, "Unauthorized", http.StatusUnauthorized)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("✅ SSOID reçu depuis le contexte :", ssoid)
|
|
||||||
|
|
||||||
// Récupérer l'utilisateur en base via le SSOID
|
|
||||||
var user models.User
|
|
||||||
if err := db.Where("sso_id = ?", ssoid).First(&user).Error; err != nil || user.ID == 0 {
|
|
||||||
http.Error(w, "Utilisateur introuvable", http.StatusUnauthorized)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var payload map[string]interface{}
|
|
||||||
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil {
|
|
||||||
http.Error(w, "Invalid JSON", http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Printf("📨 Payload reçu : %+v\n", payload)
|
|
||||||
|
|
||||||
message, err := models.BuildMessageFromPayload(payload)
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, fmt.Sprintf("Error: %v", err), http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
jsonBody, err := json.MarshalIndent(message, "", " ") // joli format
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, "Failed to encode message", http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
apiURL := fmt.Sprintf("https://graph.facebook.com/v22.0/%s/messages", user.WhatsappPhoneNumberID)
|
|
||||||
|
|
||||||
fmt.Println("📡 Envoi de la requête à :", apiURL)
|
|
||||||
fmt.Println("📦 JSON envoyé :")
|
|
||||||
fmt.Println(string(jsonBody))
|
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(jsonBody))
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, "Failed to create request", http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
req.Header.Set("Content-Type", "application/json")
|
|
||||||
req.Header.Set("Authorization", "Bearer "+user.WhatsappToken)
|
|
||||||
|
|
||||||
fmt.Println("📋 Headers :")
|
|
||||||
for key, vals := range req.Header {
|
|
||||||
for _, v := range vals {
|
|
||||||
fmt.Printf(" %s: %s\n", key, v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err := http.DefaultClient.Do(req)
|
|
||||||
if err != nil {
|
|
||||||
http.Error(w, "Failed to contact WhatsApp API", http.StatusBadGateway)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
|
|
||||||
// 🛠 debug réponse
|
|
||||||
respBody, _ := io.ReadAll(resp.Body)
|
|
||||||
fmt.Printf("✅ Réponse WhatsApp (%d) : %s\n", resp.StatusCode, string(respBody))
|
|
||||||
|
|
||||||
w.WriteHeader(resp.StatusCode)
|
|
||||||
w.Write(respBody)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var MessageTypeCreditCost = map[string]uint{
|
var MessageTypeCreditCost = map[string]uint{
|
||||||
"text": 1,
|
"text": 1,
|
||||||
@ -359,8 +285,8 @@ func WebhookReceiveHandler(db *gorm.DB) http.HandlerFunc {
|
|||||||
MessageID: msgID,
|
MessageID: msgID,
|
||||||
Type: msgType,
|
Type: msgType,
|
||||||
Content: content,
|
Content: content,
|
||||||
Direction: "inbound",
|
Direction: "Entrant",
|
||||||
Status: "received",
|
Status: "Reçu",
|
||||||
ParentID: parentID,
|
ParentID: parentID,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -531,6 +457,81 @@ func HandleTemplateTest(db *gorm.DB) http.HandlerFunc {
|
|||||||
json.NewEncoder(w).Encode(respBody)
|
json.NewEncoder(w).Encode(respBody)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
func SendWhatsAppMessage(db *gorm.DB) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
val := r.Context().Value("ssoid")
|
||||||
|
ssoid, ok := val.(string)
|
||||||
|
if !ok || ssoid == "" {
|
||||||
|
http.Error(w, "Unauthorized", http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("✅ SSOID reçu depuis le contexte :", ssoid)
|
||||||
|
|
||||||
|
// Récupérer l'utilisateur en base via le SSOID
|
||||||
|
var user models.User
|
||||||
|
if err := db.Where("sso_id = ?", ssoid).First(&user).Error; err != nil || user.ID == 0 {
|
||||||
|
http.Error(w, "Utilisateur introuvable", http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var payload map[string]interface{}
|
||||||
|
if err := json.NewDecoder(r.Body).Decode(&payload); err != nil {
|
||||||
|
http.Error(w, "Invalid JSON", http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("📨 Payload reçu : %+v\n", payload)
|
||||||
|
|
||||||
|
message, err := models.BuildMessageFromPayload(payload)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, fmt.Sprintf("Error: %v", err), http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonBody, err := json.MarshalIndent(message, "", " ") // joli format
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, "Failed to encode message", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
apiURL := fmt.Sprintf("https://graph.facebook.com/v22.0/%s/messages", user.WhatsappPhoneNumberID)
|
||||||
|
|
||||||
|
fmt.Println("📡 Envoi de la requête à :", apiURL)
|
||||||
|
fmt.Println("📦 JSON envoyé :")
|
||||||
|
fmt.Println(string(jsonBody))
|
||||||
|
|
||||||
|
req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(jsonBody))
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, "Failed to create request", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
req.Header.Set("Authorization", "Bearer "+user.WhatsappToken)
|
||||||
|
|
||||||
|
fmt.Println("📋 Headers :")
|
||||||
|
for key, vals := range req.Header {
|
||||||
|
for _, v := range vals {
|
||||||
|
fmt.Printf(" %s: %s\n", key, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, "Failed to contact WhatsApp API", http.StatusBadGateway)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
// 🛠 debug réponse
|
||||||
|
respBody, _ := io.ReadAll(resp.Body)
|
||||||
|
fmt.Printf("✅ Réponse WhatsApp (%d) : %s\n", resp.StatusCode, string(respBody))
|
||||||
|
|
||||||
|
w.WriteHeader(resp.StatusCode)
|
||||||
|
w.Write(respBody)
|
||||||
|
}
|
||||||
|
}
|
||||||
func AdminUserDelete(db *gorm.DB) http.HandlerFunc {
|
func AdminUserDelete(db *gorm.DB) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
id := mux.Vars(r)["id"]
|
id := mux.Vars(r)["id"]
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
<script src="/frontend/assets/js/json-enc.js"></script>
|
<script src="/frontend/assets/js/json-enc.js"></script>
|
||||||
<script src="/frontend/assets/js/ws.js"></script>
|
<script src="/frontend/assets/js/ws.js"></script>
|
||||||
<script src="/frontend/assets/js/function/functions.js"></script>
|
<script src="/frontend/assets/js/function/functions.js"></script>
|
||||||
<title>Login</title>
|
<title>Gestion WhatsApp</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
{{ define "jwt.pages.tmpl" }}
|
||||||
|
{{ template "head" . }}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="fr">
|
<html lang="fr">
|
||||||
<head>
|
<head>
|
||||||
@ -43,3 +45,4 @@
|
|||||||
<button id="copyBtn" onclick="copyToken()" disabled>📋 Copier le token</button>
|
<button id="copyBtn" onclick="copyToken()" disabled>📋 Copier le token</button>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
{{ end }}
|
||||||
Loading…
Reference in New Issue
Block a user