Concept

Roles, permission keys and why an action was refused

Every permission is a key of the form <resource>.<verb>; roles are bundles of these keys. A refusal tells you that you do not hold that key in that scope.

For: Platform administrator, Builder, Account administrator, Tenant administrator, Operator, Auditor, Member

Permission key

In inlorus every permission is a key of the form resource.verb: membership.write, capability.publish, audit.read and so on. There are four verbs, kept apart on purpose:

VerbMeaningRisk
readSee.low
writeCreate and change.medium
publishOpen for others to use.high
purgeDelete irreversibly. Granted only in the scope that owns the data.critical

There is no verb meaning “manage everything”. Such a verb could not express least privilege: to give a builder the right to build, you would also have to make them an administrator.

Five role archetypes

ArchetypeWhat for
AdministratorEvery key in the scope it is assigned in. Deletion applies only to that scope's own data.
BuilderThe bundle needed to build and stay there: capability, solution, app, metadata and workspace.
OperatorRunning what others have built: operations and integrations.
MemberUsing the product: reading and writing records. Can be held only in a tenant.
AuditorEvery read key and nothing else.

Platform, account and tenant admins are not separate roles: the same Administrator role is assigned in three different scopes.

Why an action is refused

When you open a screen or press a button, inlorus evaluates that job's key by checking whether you hold it in the scope you are in. If you do not, the action is refused, and inlorus does not hide it:

  • If the screen itself is locked, it says “You don't have access to this surface: key (scope)” and, below that, who can grant the permission.
  • If a button was refused, the refusal is shown with the NOT_PERMITTED code, together with the missing key and the scope.
  • No explicit “deny” rule has been written to date; a refusal comes from no rule matching that grants that key in that scope (default_deny_no_matching_rule).

Tip You can see where your permission comes from, or why it doesn't, for the selected scope on the My Access screen.