Skip to content

Policy Layer Reference

Complete reference for authorization policies in USL.

Policy Definition

policy MyPolicy {
  actor user: User
  context ctx: RequestContext

  rule can_action(resource: Resource) {
    // authorization logic
  }
}

Rule Types

Allow Rules (default)

rule can_edit(post: Post) {
  user.id == post.authorId
}

Deny Rules

deny rule no_self_follow {
  user.id == target.id
}

Allow Override

allow override admin_override {
  user.role == Role.Admin
}

Rule Precedence

deny > allow override > allow

Policy Composition

rule combined(resource: Resource) {
  BasePolicy.basic_check(resource) &&
  SpecialPolicy.special_check(resource)
}

Context

policy MyPolicy {
  actor user: User
  context ctx: RequestContext

  rule time_restricted {
    isBusinessHours(ctx.timestamp)
  }
}

Capability Approval

capability Email.Send requires can_send_email

Verification

verify policy MyPolicy {
  totality {
    // All actions covered
  }

  consistency {
    // No contradictions
  }
}

Back to Overview