tracera
Platform

RBAC + roles

Roles are fixed bundles of capabilities, scoped to a level of the hierarchy. Pick one of the six built-in roles.

Built-in roles

RoleDefault scopeWhat they can do
platform_ownerplatformEverything across all tenants. Reserved for Tracera staff and self-hosted operators.
tenant_admintenantManage brands, properties, users, billing, tokens within one tenant.
brand_managerbrandManage properties and viewers within one brand.
analystpropertyRead dashboards for the property they're attached to.
viewerpropertyRead-only, no settings.
service_accountproperty / brandMachine-to-machine. No password, no UI access; only API tokens.

Capabilities

The full list:

property.read       property.write        event.write
export.read         user.invite           user.remove
role.assign         billing.manage        token.create
token.revoke        whitelabel.write      domain.write

The authorize() check

Internally, every action in Tracera runs through one function:

// All authorisation flows through this one call.
fn authorize(actor: &Actor, capability: Capability, scope: Scope) -> Result<(), AuthErr>

The actor is the user or service-account; the capability is the verb; the scope is the level (and ID) at which the verb is performed. If the actor's memberships don't grant the capability at this scope or any ancestor, the call fails 403.