Remove the page-access matrix: routes, controller methods, model
The last of the hand-rolled Access tabs. Its UI went in the previous commit; this removes what sat behind it — the five settings/pages-access routes, the controller methods serving them, the grant model, and the orphaned nav-visibility resolver that read it. The table itself is dropped by a shell migration. Nothing consulted any of it. Page access is a permission held through a group. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RDA3fQbsa3gaHCFoV1Q8Gg
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
namespace Dashboard\Unifi;
|
||||
|
||||
use App\Models\NavItem;
|
||||
use Dashboard\Unifi\Models\UnifiPageGrant;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class UnifiServiceProvider extends ServiceProvider
|
||||
@@ -58,38 +57,6 @@ class UnifiServiceProvider extends ServiceProvider
|
||||
}
|
||||
}
|
||||
|
||||
/** Collect every unifi nav_item_id this user is allowed to see. */
|
||||
protected function visibleUnifiNavItemIdsFor(\App\Models\User $user): \Illuminate\Support\Collection
|
||||
{
|
||||
$ids = collect();
|
||||
|
||||
// Pages whose required_permission the user already holds through
|
||||
// groups keep showing, independent of the access-grant matrix.
|
||||
$permittedIds = NavItem::where('route_name', 'like', 'unifi.%')
|
||||
->whereIn('required_permission', static::realPermissionKeysFor($user))
|
||||
->pluck('id');
|
||||
$ids = $ids->merge($permittedIds);
|
||||
|
||||
if (\Illuminate\Support\Facades\Schema::hasTable('unifi_page_grants')) {
|
||||
$groupIds = $user->groups()->pluck('groups.id');
|
||||
$roleIds = $user->roles()->pluck('roles.id');
|
||||
|
||||
$grantedIds = UnifiPageGrant::query()
|
||||
->where('can_view', true)
|
||||
->where(function ($q) use ($user, $groupIds, $roleIds) {
|
||||
$q->where(fn ($u) => $u->where('grantee_type', 'user')->where('grantee_id', $user->id))
|
||||
->orWhere(fn ($g) => $g->where('grantee_type', 'group')->whereIn('grantee_id', $groupIds))
|
||||
->orWhere(fn ($r) => $r->where('grantee_type', 'role')->whereIn('grantee_id', $roleIds))
|
||||
// Default-allow row makes the page visible to everyone.
|
||||
->orWhere('grantee_type', 'default');
|
||||
})
|
||||
->pluck('nav_item_id');
|
||||
$ids = $ids->merge($grantedIds);
|
||||
}
|
||||
|
||||
return $ids->unique()->values();
|
||||
}
|
||||
|
||||
/**
|
||||
* Group + direct permissions only. Deliberately NOT allPermissions():
|
||||
* the shell folds page-grant permissions back into allPermissions/can,
|
||||
|
||||
Reference in New Issue
Block a user