38 lines
976 B
Go
38 lines
976 B
Go
|
|
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)
|
||
|
|
}
|
||
|
|
}
|