policyGate<TContext, T extends Object> function
AuthGateCallback<TContext>
policyGate<TContext, T extends Object>(
- Policy<
T> policy, - PolicyAction action
Builds a gate callback for a specific policy action.
PolicyAction.create ignores the payload. View, update, and delete return
false when the payload is not a T; policy results may be synchronous or
asynchronous.
Implementation
AuthGateCallback<TContext> policyGate<TContext, T extends Object>(
Policy<T> policy,
PolicyAction action,
) {
return (AuthGateEvaluationContext<TContext> context) {
final principal = context.principal;
final payload = context.payload;
switch (action) {
case PolicyAction.view:
if (payload is T) {
return policy.canView(principal, payload);
}
return false;
case PolicyAction.create:
return policy.canCreate(principal);
case PolicyAction.update:
if (payload is T) {
return policy.canUpdate(principal, payload);
}
return false;
case PolicyAction.delete:
if (payload is T) {
return policy.canDelete(principal, payload);
}
return false;
}
};
}