94 lines
3.2 KiB
Go
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)
|
|
// }
|