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) { // Assets statiques staticDir := "./frontend/assets/" r.PathPrefix("/frontend/assets/").Handler( http.StripPrefix("/frontend/assets/", http.FileServer(http.Dir(staticDir))), ) // Login r.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) { renders.Login(w, r, db) }) r.HandleFunc("/api/login", handlers.LoginHandler(db)).Methods("POST") // 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") } // Routes protégées func RoutesProtected(r *mux.Router, db *gorm.DB) { // 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)}) r.HandleFunc("/api/message/send", handlers.SendWhatsAppMessage(db)).Methods("POST") 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) }) r.HandleFunc("/admin/user/create-form", renders.AdminUserCreateForm()).Methods("GET") r.HandleFunc("/admin/user/{id}/edit", func(w http.ResponseWriter, r *http.Request) { renders.AdminUserEdit(db) }).Methods("GET") 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 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) }) }