update api register
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user