feat: enhance WarehouseController with user and role services for improved access control
Deploy Application / deploy (push) Successful in 23s Details

This commit is contained in:
Habib Fatkhul Rohman 2025-11-21 14:23:00 +07:00
parent 1b537183ac
commit 99013ab88e
2 changed files with 33 additions and 6 deletions

View File

@ -3,6 +3,8 @@ package controller
import (
"net/http"
roleservice "github.com/Caknoooo/go-gin-clean-starter/modules/role/service"
userservice "github.com/Caknoooo/go-gin-clean-starter/modules/user/service"
"github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/dto"
"github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/query"
"github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/service"
@ -22,7 +24,9 @@ type WarehouseController interface {
}
type warehouseController struct {
userService userservice.UserService
warehouseService service.WarehouseService
roleService roleservice.RoleService
db *gorm.DB
}
@ -87,8 +91,30 @@ func (w *warehouseController) GetById(ctx *gin.Context) {
}
func (w *warehouseController) GetAll(ctx *gin.Context) {
clientId := ctx.Query("client_id")
var filter query.WarehouseFilter
var clientId string
userId := ctx.MustGet("user_id").(string)
user, err := w.userService.GetUserById(ctx, userId)
if err != nil {
res := utils.BuildResponseFailed(dto.MESSAGE_FAILED_GET_WAREHOUSE, err.Error(), nil)
ctx.JSON(http.StatusNotFound, res)
return
}
if user.Name != constants.SUPERADMIN {
clientId = ctx.MustGet("client_id").(string)
} else {
clientId = ctx.Query("client_id")
}
// roleId := ctx.MustGet("role_id").(string)
// role, err := w.warehouseService.GetRoleById(ctx, roleId)
// if err != nil {
// res := utils.BuildResponseFailed(dto.MESSAGE_FAILED_GET_ROLE, err.Error(), nil)
// ctx.JSON(http.StatusNotFound, res)
// return
// }
filter.ClientID = clientId
if err := ctx.ShouldBindQuery(&filter); err != nil {
res := utils.BuildResponseFailed(dto.MESSAGE_FAILED_GET_WAREHOUSE, err.Error(), nil)
@ -125,10 +151,12 @@ func (w *warehouseController) GetAll(ctx *gin.Context) {
ctx.JSON(http.StatusOK, res)
}
func NewWarehouseController(i *do.Injector, warehouseService service.WarehouseService) WarehouseController {
func NewWarehouseController(i *do.Injector, warehouseService service.WarehouseService, roleService roleservice.RoleService, userService userservice.UserService) WarehouseController {
db := do.MustInvokeNamed[*gorm.DB](i, constants.DB)
return &warehouseController{
warehouseService: warehouseService,
roleService: roleService,
userService: userService,
db: db,
}
}

View File

@ -96,7 +96,6 @@ import (
inventoryTransactionRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_transaction/repository"
inventoryTransactionService "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_transaction/service"
"github.com/Caknoooo/go-gin-clean-starter/modules/user/controller"
"github.com/Caknoooo/go-gin-clean-starter/modules/user/repository"
userService "github.com/Caknoooo/go-gin-clean-starter/modules/user/service"
@ -164,7 +163,7 @@ func RegisterDependencies(injector *do.Injector) {
// Service
userServ := userService.NewUserService(userRepository, roleRepository, warehouseRepository, refreshTokenRepository, jwtService, db)
productService := productService.NewProductService(productRepository, db)
roleService := roleService.NewRoleService(roleRepository, refreshTokenRepository, jwtService, userServ, db)
roleServ := roleService.NewRoleService(roleRepository, refreshTokenRepository, jwtService, userServ, db)
menuSvc := menuService.NewMenuService(menuRepository, jwtService, db)
maintenanceGroupServ := maintGroupService.NewMaintenanceGroupService(maintenanceGroupRepository, maintenanceGroupRoleRepository, maintenanceGroupRoleUserRepository, db)
clientServ := clientService.NewClientService(clientRepository, db)
@ -202,7 +201,7 @@ func RegisterDependencies(injector *do.Injector) {
)
do.Provide(
injector, func(i *do.Injector) (roleController.RoleController, error) {
return roleController.NewRoleController(i, roleService), nil
return roleController.NewRoleController(i, roleServ), nil
},
)
do.Provide(
@ -247,7 +246,7 @@ func RegisterDependencies(injector *do.Injector) {
)
do.Provide(
injector, func(i *do.Injector) (warehouseController.WarehouseController, error) {
return warehouseController.NewWarehouseController(i, warehouseServ), nil
return warehouseController.NewWarehouseController(i, warehouseServ, roleServ, userServ), nil
},
)
do.Provide(