package user import ( "cardverse/internal/middleware" "github.com/gin-gonic/gin" "gorm.io/gorm" ) func RegisterRoutes(router *gin.RouterGroup, db *gorm.DB) { repo := NewRepository(db) svc := NewService(repo) handler := NewHandler(svc) // Route khusus user yang sedang login untuk kelola profil sendiri me := router.Group("/users/me") me.Use(middleware.AuthRequired()) { me.GET("", handler.GetProfile) me.PUT("", handler.UpdateProfile) me.POST("/avatar", handler.UploadAvatar) } // Route khusus Admin/Superadmin untuk kelola semua data user admin := router.Group("/users") admin.Use(middleware.AuthRequired()) admin.Use(middleware.RequireRoles(RoleAdmin, RoleSuperAdmin)) { admin.GET("", handler.GetAll) admin.POST("", handler.Create) admin.GET("/:id", handler.GetByID) admin.PUT("/:id", handler.Update) admin.PUT("/:id/suspend", handler.Suspend) admin.PUT("/:id/unsuspend", handler.Unsuspend) admin.DELETE("/:id", handler.Delete) } }