whatapp-go-pvnet/backend/routes/routes.go

86 lines
3.1 KiB
Go
Raw Normal View History

2025-05-09 08:14:22 +00:00
package routes
import (
"cangui/whatsapp/backend/handlers"
"cangui/whatsapp/backend/renders"
"net/http"
"github.com/gorilla/mux"
"gorm.io/gorm"
)
// Routes non protégées
func RoutesPublic(r *mux.Router, db *gorm.DB) {
2025-05-09 16:35:21 +00:00
// Assets statiques
2025-05-09 08:14:22 +00:00
staticDir := "./frontend/assets/"
r.PathPrefix("/frontend/assets/").Handler(
http.StripPrefix("/frontend/assets/", http.FileServer(http.Dir(staticDir))),
)
2025-05-09 16:35:21 +00:00
// Login
r.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
renders.Login(w, r, db)
})
2025-05-09 08:14:22 +00:00
r.HandleFunc("/api/login", handlers.LoginHandler(db)).Methods("POST")
2025-05-09 16:35:21 +00:00
// Webhook WhatsApp (vérification + réception)
r.HandleFunc("/api/whatsapp/webhook", handlers.WebhookVerifyHandler()).Methods("GET")
r.HandleFunc("/api/whatsapp/webhook", handlers.WebhookReceiveHandler(db)).Methods("POST")
2025-05-09 08:14:22 +00:00
}
2025-05-09 16:35:21 +00:00
2025-05-09 08:14:22 +00:00
// Routes protégées
func RoutesProtected(r *mux.Router, db *gorm.DB) {
2025-05-09 16:35:21 +00:00
// Dashboard (admin ou client)
r.HandleFunc("/dashboard", func(w http.ResponseWriter, r *http.Request) {
renders.Dashboard(db)
})
// Test d'envoi de message (simples & templates)
r.HandleFunc("/test/send", func(w http.ResponseWriter, r *http.Request) {renders.TestMessagesPages(w, r, db)})
r.HandleFunc("/test/send2", func(w http.ResponseWriter, r *http.Request) {renders.TestMessagesPages2(w, r, db)})
2025-05-09 08:14:22 +00:00
r.HandleFunc("/api/message/send", handlers.SendWhatsAppMessage(db)).Methods("POST")
2025-05-09 16:35:21 +00:00
r.HandleFunc("/api/message/send2", handlers.HandleTemplateTest(db)).Methods("POST")
// Conversations (admin/client)
r.HandleFunc("/admin/user/{id}/conversations", func(w http.ResponseWriter, r *http.Request) {
renders.AdminConversationPage(db)
})
r.HandleFunc("/api/user/{id}/conversations", func(w http.ResponseWriter, r *http.Request) {
renders.AdminConversationRows(db)
})
r.HandleFunc("/admin/user/{id}/conversation-thread", func(w http.ResponseWriter, r *http.Request) {
renders.AdminConversationThread(db)
})
// Utilisateurs (admin)
r.HandleFunc("/admin/user", func(w http.ResponseWriter, r *http.Request) {
renders.AdminUserList(db)
})
2025-05-09 15:28:15 +00:00
r.HandleFunc("/admin/user/create-form", renders.AdminUserCreateForm()).Methods("GET")
2025-05-09 16:35:21 +00:00
r.HandleFunc("/admin/user/{id}/edit", func(w http.ResponseWriter, r *http.Request) {
renders.AdminUserEdit(db)
}).Methods("GET")
2025-05-09 15:09:51 +00:00
2025-05-09 16:35:21 +00:00
r.HandleFunc("/api/user/create", renders.CreateUserHandler(db)).Methods("POST")
r.HandleFunc("/api/user/update/{id}", func(w http.ResponseWriter, r *http.Request) {
renders.AdminUserUpdate(db)
}).Methods("PUT")
r.HandleFunc("/api/user/delete/{id}", handlers.AdminUserDelete(db)).Methods("DELETE")
// Test JWT
r.HandleFunc("/jwt", func(w http.ResponseWriter, r *http.Request){renders.JwtTest(w, r, db)})
// Déconnexion
2025-05-09 14:51:23 +00:00
r.HandleFunc("/logout", func(w http.ResponseWriter, r *http.Request) {
http.SetCookie(w, &http.Cookie{
Name: "token",
Value: "",
Path: "/",
MaxAge: -1,
HttpOnly: true,
})
http.Redirect(w, r, "/login", http.StatusSeeOther)
})
2025-05-09 16:35:21 +00:00
}