veza/veza-backend-api/internal/api/user/routes.go
2025-12-03 20:29:37 +01:00

94 lines
3.2 KiB
Go

package user
import (
"veza-backend-api/internal/middleware"
"github.com/gin-gonic/gin"
)
// RouteGroup représente un groupe de routes pour le module utilisateur
type RouteGroup struct {
handler *Handler
secret string
authMiddleware *middleware.AuthMiddleware // Added authMiddleware
}
// NewRouteGroup crée une nouvelle instance de RouteGroup
func NewRouteGroup(handler *Handler, jwtSecret string, authMiddleware *middleware.AuthMiddleware) *RouteGroup { // Added authMiddleware parameter
return &RouteGroup{
handler: handler,
secret: jwtSecret,
authMiddleware: authMiddleware, // Assign authMiddleware
}
}
// Register enregistre toutes les routes du module utilisateur
func (rg *RouteGroup) Register(router *gin.RouterGroup) {
// Groupe principal des utilisateurs
users := router.Group("/users")
{
// Routes publiques
rg.registerPublicRoutes(users)
// Routes protégées
rg.registerProtectedRoutes(users)
}
}
// registerPublicRoutes enregistre les routes publiques
func (rg *RouteGroup) registerPublicRoutes(router *gin.RouterGroup) {
// GET /api/v1/users - Liste des utilisateurs
router.GET("", rg.handler.GetUsers)
// GET /api/v1/users/:id/avatar - Avatar d'un utilisateur
router.GET("/:id/avatar", rg.handler.GetUserAvatar)
// POST /api/v1/users/recover - Récupérer un compte supprimé
router.POST("/recover", rg.handler.RecoverAccount)
}
// registerProtectedRoutes enregistre les routes protégées
func (rg *RouteGroup) registerProtectedRoutes(router *gin.RouterGroup) {
protected := router.Group("")
protected.Use(rg.authMiddleware.RequireAuth()) // Changed to RequireAuth()
{
// GET /api/v1/users/me - Informations de l'utilisateur connecté
protected.GET("/me", rg.handler.GetMe)
// PUT /api/v1/users/me - Mise à jour des informations de l'utilisateur
protected.PUT("/me", rg.handler.UpdateMe)
// PUT /api/v1/users/me/password - Changement de mot de passe
protected.PUT("/me/password", rg.handler.ChangePassword)
// GET /api/v1/users/me/preferences - Récupérer les préférences
protected.GET("/me/preferences", rg.handler.GetPreferences)
// PUT /api/v1/users/me/preferences - Mettre à jour les préférences
protected.PUT("/me/preferences", rg.handler.UpdatePreferences)
// DELETE /api/v1/users/me - Supprimer le compte
protected.DELETE("/me", rg.handler.DeleteAccount)
// GET /api/v1/users/me/status - Statut du compte
protected.GET("/me/status", rg.handler.GetAccountStatus)
// GET /api/v1/users/me/export - Exporter les données (RGPD)
protected.GET("/me/export", rg.handler.ExportData)
// POST /api/v1/users/me/request-deletion - Demander suppression définitive
protected.POST("/me/request-deletion", rg.handler.RequestDataDeletion)
// GET /api/v1/users/except-me - Liste des utilisateurs sauf l'utilisateur connecté
protected.GET("/except-me", rg.handler.GetUsersExceptMe)
// GET /api/v1/users/search - Recherche d'utilisateurs
protected.GET("/search", rg.handler.SearchUsers)
}
}
// SetupRoutes configure les routes du module utilisateur (pour la compatibilité)
// func SetupRoutes(router *gin.RouterGroup, handler *Handler, jwtSecret string) {
// rg := NewRouteGroup(handler, jwtSecret)
// rg.Register(router)
// }