TenantAtlas/apps/platform/app/Support/Rbac/Actions/ResolvesUiActionContext.php
Ahmed Darrazi 9e435ea91f
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 1m2s
feat: implement explicit UiActionContext contract
2026-06-07 13:12:02 +02:00

36 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Support\Rbac\Actions;
use App\Models\ManagedEnvironment;
use App\Models\Workspace;
use Filament\Facades\Filament;
trait ResolvesUiActionContext
{
protected static function tenantUiActionContext(
?ManagedEnvironment $tenant = null,
UiActionContextSource $source = UiActionContextSource::PageResolver,
): UiActionContext {
if (! $tenant instanceof ManagedEnvironment && method_exists(static::class, 'resolveTenantContextForCurrentPanel')) {
$tenant = static::resolveTenantContextForCurrentPanel();
}
if (! $tenant instanceof ManagedEnvironment) {
$filamentTenant = Filament::getTenant();
$tenant = $filamentTenant instanceof ManagedEnvironment ? $filamentTenant : null;
}
return UiActionContext::forEnvironment($tenant, $source);
}
protected static function workspaceUiActionContext(
?Workspace $workspace = null,
UiActionContextSource $source = UiActionContextSource::WorkspaceContext,
): UiActionContext {
return UiActionContext::forWorkspace($workspace, $source);
}
}