final |
|---|
readonly |
Folds the registered {@see VetoerInterface}s into a single {@see Disposition} per artifact, by most-restrictive-wins:
any Hide ⇒ Hide (short-circuits)
else any Lock ⇒ Lock
else Show
Composition is monotonic and order-independent — adding a vetoer can
only ever hide/lock more, never reveal. An empty chain (the Core
default, when nothing is tagged) returns Show for everything: the
no-op that makes a Core-only dashboard prune nothing.
Built once per request from the container's tagged vetoers and injected
into a family's transformer (the dashboard's
{@see \LaravelUi5\Core\Ui5\Dashboard\DefaultDashboardTransformer} is the first
consumer). This is emit-composition infrastructure: a verdict ("show this
artifact, for this actor, now") is meaningful only inside the build
pipeline. For the dashboard, the card endpoint is deliberately not a
second enforcement site — a direct manifest fetch has no composition context, and direct-fetch
authorization is the SDK access model's concern (an #[Access]-style
attribute, cross-cutting all routable artifacts), not a re-run of this
chain. See
{@see https://laravelui5.com/core/backend/dashboard#visibility-the-veto-chain}.
| Methods | ||
|---|---|---|
public
|
__construct(VetoerInterface[] $vetoers = [])
|
# |
public
|
dispose(Ui5ArtifactInterface $artifact, Ui5ContextInterface $context): Disposition
|
# |