update api register

This commit is contained in:
Wian Drs
2026-08-01 11:42:42 +07:00
parent b0d08211ec
commit 75342dc7b7
55 changed files with 2254 additions and 35 deletions
+27 -1
View File
@@ -13,14 +13,16 @@ class MenuController extends ApiController
{
$user = auth()->user();
$tenantId = request()->attributes->get('tenant_id');
$tenantRole = $user?->tenantRole($tenantId);
if (! $user) {
return $this->error('Unauthenticated', 401);
}
if ($user->isMasterAdmin()) {
if ($user->isMasterAdmin() || $user->is_platform_staff) {
$menus = MenuList::query()
->where('is_active', true)
->when($user->is_platform_staff && ! $user->isMasterAdmin(), fn ($q) => $q->whereIn('slug', ['role-applications', 'role-applications-tenants']))
->orderBy('sort_order')
->orderBy('id')
->get()
@@ -108,10 +110,22 @@ class MenuController extends ApiController
$tree = $this->buildMenuTree($menus);
if (! $user->isMasterAdmin() && ! $user->is_platform_staff && ! in_array($tenantRole, ['staff', 'tenant_owner'], true)) {
$restrictedSlugs = ['voucher-hotspot-agents', 'voucher-hotspot-login-page'];
$tree = $this->removeRestrictedMenus($tree, $restrictedSlugs);
}
if (! $user->isMasterAdmin() && ! $user->is_platform_staff) {
$tree = $this->removeRestrictedMenus($tree, ['role-applications-tenants']);
}
if (! $user->isTenantOwner($tenantId)) {
$tree = $this->removeRestrictedMenus($tree, ['role-applications-staff']);
}
return $this->success(
[
'is_master' => (bool) $user->is_master,
'access_level' => $user->access_level->value,
'tenant_role' => $tenantRole,
'tenant_id' => $tenantId,
'menus' => $tree,
],
@@ -143,4 +157,16 @@ class MenuController extends ApiController
})
->all();
}
private function removeRestrictedMenus(array $menus, array $restrictedSlugs): array
{
return collect($menus)
->reject(fn ($menu) => in_array($menu['slug'], $restrictedSlugs, true))
->map(function ($menu) use ($restrictedSlugs) {
$menu['children'] = $this->removeRestrictedMenus($menu['children'] ?? [], $restrictedSlugs);
return $menu;
})
->values()->all();
}
}