From 5534e4f8197a3caae936d6f98bde0c3483d8df45 Mon Sep 17 00:00:00 2001 From: cangui Date: Sun, 11 May 2025 09:46:08 +0200 Subject: [PATCH] ellelel --- backend/handlers/main.go | 3 - backend/renders/renders.go | 13 ++++ backend/routes/routes.go | 3 +- frontend/templates/apidoc.pages.tmpl | 89 +++++++++++++++++++++++++++ frontend/templates/sidebar.pages.tmpl | 9 ++- 5 files changed, 111 insertions(+), 6 deletions(-) create mode 100644 frontend/templates/apidoc.pages.tmpl diff --git a/backend/handlers/main.go b/backend/handlers/main.go index 7f8ea35..8f2799a 100644 --- a/backend/handlers/main.go +++ b/backend/handlers/main.go @@ -372,8 +372,6 @@ func WebhookReceiveHandler(db *gorm.DB) http.HandlerFunc { w.WriteHeader(http.StatusOK) } } - - func CreateUser(db *gorm.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var user models.User @@ -455,7 +453,6 @@ func DeleteUser(db *gorm.DB) http.HandlerFunc { w.WriteHeader(http.StatusNoContent) } } - func HandleTemplateTest(db *gorm.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { val := r.Context().Value("ssoid") diff --git a/backend/renders/renders.go b/backend/renders/renders.go index 76217f7..6e11699 100644 --- a/backend/renders/renders.go +++ b/backend/renders/renders.go @@ -25,6 +25,19 @@ func TestMessagesPages(w http.ResponseWriter, r *http.Request){ func TestMessagesPages2(w http.ResponseWriter, r *http.Request){ renderTemplate(w,"test",nil) } +func ApiDocPage(db *gorm.DB) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + data := map[string]interface{}{} + if val := r.Context().Value("ssoid"); val != nil { + var user models.User + if err := db.Where("sso_id = ?", val.(string)).First(&user).Error; err == nil { + data["User"] = user + } + } + renderTemplate(w, "apidoc", data) + } +} + func AdminUserList(db *gorm.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var users []models.User diff --git a/backend/routes/routes.go b/backend/routes/routes.go index b12e838..1cf7327 100644 --- a/backend/routes/routes.go +++ b/backend/routes/routes.go @@ -63,7 +63,8 @@ func RoutesPublic(r *mux.Router, db *gorm.DB) { http.Redirect(w, r, "/login", http.StatusSeeOther) }) - + r.HandleFunc("/apidoc", renders.ApiDocPage(db)) + // // Ici on place les vues et API qui doivent être protégées // r.HandleFunc("/stream", StreamHandler) diff --git a/frontend/templates/apidoc.pages.tmpl b/frontend/templates/apidoc.pages.tmpl new file mode 100644 index 0000000..37ee0bb --- /dev/null +++ b/frontend/templates/apidoc.pages.tmpl @@ -0,0 +1,89 @@ +{{ define "apidoc.pages.tmpl" }} +{{ template "head" . }} + +
+

📘 API WhatsApp SaaS – Documentation JSON

+ +
+

Tu peux utiliser ces endpoints via Postman, PHP (cURL) ou JS. Toutes les requêtes POST attendent du JSON dans le corps et certaines nécessitent un JWT dans un token ou un cookie.

+
+ +
+

🔐 Authentification

+

POST /api/login

+
{
+  "email": "admin@example.com",
+  "password": "motdepasse"
+}
+ +

Retour : Cookie "token" et JSON {"message":"Login success"}

+
+ +
+

📤 Envoi message simple

+

POST /api/message/send (nécessite token)

+
{
+  "to": "33612345678",
+  "type": "text",
+  "text": {
+    "body": "Bonjour depuis l'API"
+  },
+  "token": "votre_jwt_token_si_poster_via_JSON"
+}
+
+ +
+

📤 Envoi message template

+

POST /api/message/send2

+
{
+  "to": "33612345678",
+  "template_name": "hello_world",
+  "language": "fr",
+  "param1": "Jean",
+  "param2": "commande #1234",
+  "token": "votre_jwt_token"
+}
+
+ +
+

📥 Webhook WhatsApp

+

GET /api/whatsapp/webhook (vérification)
+ Envoyer ?hub.mode=subscribe&hub.verify_token=secrettoken&hub.challenge=123

+ +

POST /api/whatsapp/webhook (callback messages/statuts)

+
+ +
+

👤 Utilisateurs (admin uniquement)

+ +

POST /api/user/create

+
{
+  "email": "client@demo.com",
+  "password": "secret",
+  "sso_id": "CLIENT123",
+  "role": "CLIENT",
+  "is_active": true,
+  "whatsapp_token": "EAAxxxxx",
+  "whatsapp_phone_number_id": "123456789",
+  "monthly_credits": 100
+}
+ +

PUT /api/user/update/{id}

+
{
+  "email": "nouveau@demo.com",
+  "is_active": true,
+  "monthly_credits": 200
+}
+ +

DELETE /api/user/delete/{id}

+
+ +
+

💬 Conversations

+

GET /api/user/{id}/conversations

+

Filtrable avec ?type=text ou ?filter=today

+ +

GET /admin/user/{id}/conversation-thread
(Vue HTML pour un utilisateur)

+
+
+{{ end }} diff --git a/frontend/templates/sidebar.pages.tmpl b/frontend/templates/sidebar.pages.tmpl index 85d9bd6..87b257b 100644 --- a/frontend/templates/sidebar.pages.tmpl +++ b/frontend/templates/sidebar.pages.tmpl @@ -1,5 +1,5 @@ {{ define "sidebar" }} -