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 ( import (
"net/http" "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/dto"
"github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/query" "github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/query"
"github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/service" "github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/service"
@ -22,7 +24,9 @@ type WarehouseController interface {
} }
type warehouseController struct { type warehouseController struct {
userService userservice.UserService
warehouseService service.WarehouseService warehouseService service.WarehouseService
roleService roleservice.RoleService
db *gorm.DB db *gorm.DB
} }
@ -87,8 +91,30 @@ func (w *warehouseController) GetById(ctx *gin.Context) {
} }
func (w *warehouseController) GetAll(ctx *gin.Context) { func (w *warehouseController) GetAll(ctx *gin.Context) {
clientId := ctx.Query("client_id")
var filter query.WarehouseFilter 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 filter.ClientID = clientId
if err := ctx.ShouldBindQuery(&filter); err != nil { if err := ctx.ShouldBindQuery(&filter); err != nil {
res := utils.BuildResponseFailed(dto.MESSAGE_FAILED_GET_WAREHOUSE, err.Error(), 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) 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) db := do.MustInvokeNamed[*gorm.DB](i, constants.DB)
return &warehouseController{ return &warehouseController{
warehouseService: warehouseService, warehouseService: warehouseService,
roleService: roleService,
userService: userService,
db: db, db: db,
} }
} }

View File

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