package user import ( "github.com/Caknoooo/go-gin-clean-starter/middlewares" "github.com/Caknoooo/go-gin-clean-starter/modules/auth/service" "github.com/Caknoooo/go-gin-clean-starter/modules/user/controller" "github.com/Caknoooo/go-gin-clean-starter/pkg/constants" "github.com/gin-gonic/gin" "github.com/samber/do" ) func RegisterRoutes(server *gin.Engine, injector *do.Injector) { userController := do.MustInvoke[controller.UserController](injector) jwtService := do.MustInvokeNamed[service.JWTService](injector, constants.JWTService) userRoutes := server.Group("/api/v1/users") { userRoutes.POST("", middlewares.Authenticate(jwtService), userController.Create) // userRoutes.POST("/login", userController.Login) // userRoutes.POST("/verify-email", userController.VerifyEmail) userRoutes.GET("", middlewares.Authenticate(jwtService), userController.GetAllUser) userRoutes.GET("/me", middlewares.Authenticate(jwtService), userController.Me) userRoutes.GET("/:id", middlewares.Authenticate(jwtService), userController.GetUserById) userRoutes.PUT("/:id", middlewares.Authenticate(jwtService), userController.Update) userRoutes.DELETE("/:id", middlewares.Authenticate(jwtService), userController.Delete) userRoutes.POST("/send-verification-email", userController.SendVerificationEmail) userRoutes.POST("/refresh", middlewares.Authenticate(jwtService), userController.Refresh) // Switch role & warehouse userRoutes.POST("/:id/switch-role", middlewares.Authenticate(jwtService), userController.SwitchRole) userRoutes.POST("/:id/switch-warehouse", middlewares.Authenticate(jwtService), userController.SwitchWarehouse) // user warehouse routes userRoutes.GET("/:id/warehouses", middlewares.Authenticate(jwtService), userController.GetUserWarehouses) userRoutes.POST("/:id/warehouses", middlewares.Authenticate(jwtService), userController.AddUserWarehouse) userRoutes.PUT("/:id/warehouses", middlewares.Authenticate(jwtService), userController.ReplaceUserWarehouses) userRoutes.DELETE("/:id/warehouses/:warehouseId", middlewares.Authenticate(jwtService), userController.RemoveUserWarehouse) } }