Roles

Part of the IP4CMS portal. ← All module guides

What it's for β€” A role is a named bundle of permissions that you assign to users. Roles are the heart of access control in IP4CMS: a user can do exactly what their assigned roles allow, and nothing more. Instead of granting permissions to people one at a time, you build a few well-designed roles (for example "Finance Officer", "Front Desk", "Read-only Auditor") and assign them.

Each permission is a small, specific capability written in the format module:action:resource β€” for example members:read:all (read all members), families:create:all (create families), or events:manage:attendance (manage event attendance). A role holds a list of these.

There is one special permission, admin:full:access, the "Administrator Full Access" wildcard. A role with this permission can do everything, in every module, regardless of what else is or isn't ticked. Treat it as the master key.

Where to find it β€” In the portal sidebar, open Roles. You can also reach it from Settings β†’ Roles. Roles is an always-on baseline module (roles) β€” it is part of every tenant and cannot be switched off, because access control has to exist before anything else can be governed.

Before you start β€” You need permission to manage roles. The screen and its buttons are gated by:

If you hold admin:full:access, all of these are granted automatically. Also note that the permissions you can tick when building a role are filtered by your tenant's licence β€” only permissions for modules your tenant is licensed for appear.

Key tasks

Create a role

  1. Open Roles and click Add Role.
  2. Fill in Basic Information, then choose Applicable Contexts and Permissions (covered below).
  3. Click Create Role. The button stays disabled until the form is valid.

Fields:

Select permissions

Permissions are grouped into collapsible module sections (for example Members, Locations, Events), each showing how many of its permissions you've selected (e.g. "4 / 12 selected"). Some modules have sub-modules nested underneath (for example Members: Ranks, Members: Requests), shown indented inside their parent.

At the top sits the highlighted Administrator Full Access box. Ticking it selects admin:full:access and clears and disables every other permission β€” a full-access role carries only that one wildcard. Untick it to go back to picking individual permissions. Only use it for trusted super-admins.

Note: if you somehow include a permission that no longer exists (for example an old one from before a module change), it is silently filtered out when the role is saved rather than blocking the save.

Context (tenant / customer / member)

Applicable Contexts decide which kinds of users a role can be assigned to. A user can only receive roles that match their own context, so this keeps internal-staff roles separate from portal-user roles. The available contexts are:

The list of contexts you see depends on which related modules your tenant runs. Tick every context a role should be available in; you must select at least one. A role meant for back-office staff would use Internal Users; a role for the member app would use Member.

Assign roles to users

You don't assign roles from the Roles screen itself β€” you do it from the Users module (and the equivalent admin screens for partners, customers, suppliers, and members). When you create or edit a user there, you pick one or more roles, and the user's effective permissions become the combined list from all their roles. A user can hold several roles at once; their permissions add up.

To see how many users currently hold a role, open the role: the detail page shows a users assigned count.

Member vs operator roles

A practical split worth understanding:

Keep these separated by context so an internal role can never accidentally be handed to a portal member, and vice versa.

How the data connects

Permissions & access

ActionPermission required
View roles list and detailroles:read:all
Create a roleroles:create:all
Edit a roleroles:update:all
Delete a roleroles:delete:all

admin:full:access satisfies all of the above. The permissions offered when building a role are limited to your tenant's licensed modules.

Tips & gotchas