Skip to content

Deny overrides allow

Use deny rules when one exception should override a broader grant.

Terminal window
import { policy } from "@layeron/modules"
const appPolicy = policy({
name: "app",
rules: [
{
id: "allow-support-read",
effect: "allow",
subjects: ["role:support"],
actions: ["ticket.read"],
resources: ["ticket:*"],
},
{
id: "deny-sensitive-tickets",
effect: "deny",
subjects: ["role:support"],
actions: ["ticket.read"],
resources: ["ticket:sensitive-*"],
},
],
})
const decision = await appPolicy.evaluate({
subject: {
kind: "user",
id: "user_1",
roles: ["support"],
},
action: "ticket.read",
resource: {
type: "ticket",
id: "sensitive-123",
},
})

When both rules match, the deny rule wins.