Interface LaravelUi5\Sdk\Shell\CmdK\Contracts\VisibilityConstrainerInterface

Applies visibility constraints to a Collector query.


Architectural Role

A VisibilityConstrainer is an adapter between the CmdK search pipeline and the Security domain.

It is responsible for:

  • Delegating visibility decisions to a domain-specific {@see VisibilityResolverInterface} in the Security layer.
  • Applying relational constraints to the provided query.

It MUST:

  • Operate purely at query level (Eloquent Builder).
  • Delegate actual visibility logic to the Security domain.
  • Remain stateless regarding grant resolution.

It MUST NOT:

  • Resolve abilities, roles, or grants directly.
  • Access security tables (e.g. abilities, assignments).
  • Contain domain authorization logic.
  • Materialize query results.

Layer Separation

CmdK Layer:

  • Collector
  • VisibilityConstrainer (this interface)
  • SearchService

Security Layer:

  • VisibilityResolvers
  • AbilityResolvers
  • Grant resolution

The Constrainer bridges CmdK and Security, but must not reimplement or duplicate Security logic.


Lifecycle

$query = $collector->query(...) $query = $constrainer->constrain($query, $context) $items = $collector->collect($query, ...)

Final dispatch-time authorization remains mandatory.

Methods