wms-be/modules/role/routes.go

41 lines
2.2 KiB
Go

package role
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/role/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) {
roleController := do.MustInvoke[controller.RoleController](injector)
jwtService := do.MustInvokeNamed[service.JWTService](injector, constants.JWTService)
roleRoutes := server.Group("/api/v1/roles")
{
roleRoutes.POST("", middlewares.Authenticate(jwtService), roleController.CreateRole)
roleRoutes.GET("", middlewares.Authenticate(jwtService), roleController.GetRoles)
roleRoutes.GET("/:id", middlewares.Authenticate(jwtService), roleController.GetRoleByID)
roleRoutes.PUT("/:id", middlewares.Authenticate(jwtService), roleController.UpdateRole)
roleRoutes.DELETE("/:id", middlewares.Authenticate(jwtService), roleController.DeleteRole)
roleRoutes.POST("/:id/permissions", middlewares.Authenticate(jwtService), roleController.AssignPermissionsToRole)
roleRoutes.DELETE("/:id/permissions", middlewares.Authenticate(jwtService), roleController.RemovePermissionsFromRole)
// roleRoutes.POST("/assign-roles-to-user", middlewares.Authenticate(jwtService), roleController.AssignRolesToUser)
// roleRoutes.POST("/remove-roles-from-user", middlewares.Authenticate(jwtService), roleController.RemoveRolesFromUser)
// roleRoutes.GET("/user/:user_id", middlewares.Authenticate(jwtService), roleController.GetRolesByUserID)
}
// register user -> roles endpoints under users resource (RESTful)
usersGroup := server.Group("/api/v1/users")
{
usersGroup.GET("/:id/roles", middlewares.Authenticate(jwtService), roleController.GetRolesByUserID)
// assign multiple roles to a user (body contains role_ids array)
usersGroup.POST("/:id/roles", middlewares.Authenticate(jwtService), roleController.AssignRolesToUser)
// remove multiple roles from a user (body contains role_ids array)
usersGroup.DELETE("/:id/roles", middlewares.Authenticate(jwtService), roleController.RemoveRolesFromUser)
}
}