Roles & permissions
A role is a named set of access levels. Each business has its own roles, built from the standard set and changed by its admins on the Roles & Permissions page.
Who uses it
Only admins create, rename, edit or delete roles. Everyone can see what their own role allows.
How it works
For every area of the app a role has one of three levels:
| Level | Meaning |
|---|---|
| Full Access | See and change |
| Read Only | See, not change |
| No Access | Hidden |
Areas that can be set: Orders, Order cancelation, Order returns, Invoices, Payments, Products, Catalogs, Promotions, Customers, Chat, Vendors, Purchase orders, Sales reports, Accounting, Delivery, Team, Cart and Business data. An area not granted shows No Access.
The standard roles
A supplier starts with these. Admins can edit or delete them.
| Area | Clerk | Driver | Warehouse | Sales Person |
|---|---|---|---|---|
| Orders | Full | Full | Full | Full |
| Order cancelation | Full | None | None | None |
| Order returns | Full | None | None | None |
| Invoices | Full | Read | Read | Read |
| Payments | Full | None | None | None |
| Products | Full | Read | Full | Full |
| Catalogs | Full | None | Read | Read |
| Promotions | Full | Read | Read | Read |
| Customers | Full | Read | Read | Read |
| Chat | Full | None | None | Read |
| Vendors | Full | None | Read | Read |
| Purchase orders | Full | None | Read | Read |
| Sales reports | Full | None | None | None |
| Accounting | Full | None | None | None |
| Delivery | None | Full | None | None |
| Team | Read | None | None | None |
| Business data | None | None | None | None |
Creating a role
Add a role with a name. Names must be unique within the business, ignoring capitals and surrounding spaces, and can be in any language. Two businesses may each have a "Cashier". Admin is reserved and cannot be used to create or rename a role.
Editing a role
Rename a role and its new name shows everywhere: the Team page and pending invitations. Renaming to another role's name is refused. Change access levels and save; the change applies to everyone with that role at once, with no new sign-in. Several roles can be saved together, and an entry the system doesn't recognise is skipped without blocking the rest.
Deleting a role
Deleting a role removes it from the list. A wizard, Reassign Users Before Deleting Role, lets you pick a replacement: people and pending invitations move to it (Reassign and Delete). With no replacement they end up with no role, so they have no access.
Where it shows up
- Roles & Permissions page, reached from Team.
- The role picker when adding or editing a team member.
Permissions
Admin only to change. Team members can see their own effective permissions.
Specs
# prefix: MTR
Feature: Manage Team Roles
An admin defines the roles available in their business and the permissions
each role grants.
Background:
Given an admin is signed in to their business
Rule: Each business owns its own set of roles
Scenario: MTR-001 admin creates a new role with a unique name
Given the business has no role named "Cashier"
When the admin creates a role named "Cashier"
Then the role "Cashier" appears in the business's role list
And the role is available to assign to team members and invitations
Scenario: MTR-002 the same role name is allowed in two different businesses
Given business A already has a role named "Cashier"
And business B has no role named "Cashier"
When an admin of business B creates a role named "Cashier"
Then the role "Cashier" is created in business B
And business A's "Cashier" role is unaffected
Scenario Outline: MTR-003 role name uniqueness ignores case and surrounding whitespace
Given the business already has a role named "<existing>"
When the admin attempts to create a role named "<attempted>"
Then the new role is rejected as a duplicate
And the business still has exactly one role with that name
Examples:
| existing | attempted |
| Cashier | cashier |
| Cashier | CASHIER |
| Cashier | Cashier |
Scenario: MTR-004 non-Latin role names are supported
Given the business has no role named "出纳员"
When the admin creates a role named "出纳员"
Then the role "出纳员" appears in the business's role list
And the role behaves identically to any other named role
Rule: The name "Admin" is reserved
Scenario Outline: MTR-005 a role cannot take the name "Admin"
When the admin attempts to <action> a role with the name "Admin"
Then the request is rejected as a reserved name
And no role named "Admin" exists in the business
Examples:
| action |
| create |
| rename |
Rule: Roles can be renamed
Scenario: MTR-006 renaming a role updates its name everywhere it is referenced
Given the business has a role named "Cashier"
And some team members are assigned the role "Cashier"
And a pending invitation references the role "Cashier"
When the admin renames the role to "Front Desk"
Then the role is shown as "Front Desk" in the business's role list
And those team members are shown as having the role "Front Desk"
And the pending invitation is shown as inviting for the role "Front Desk"
Scenario: MTR-007 renaming a role to clash with another existing role is rejected
Given the business has roles named "Cashier" and "Manager"
When the admin attempts to rename "Manager" to "Cashier"
Then the rename is rejected as a duplicate
And both roles keep their original names
Rule: Permissions can be updated
Scenario: MTR-008 changing a role's permissions takes effect immediately for everyone with that role
Given the business has a role named "Cashier" with no access to orders
And several team members are assigned the role "Cashier"
When the admin grants the role "Cashier" full access to orders
Then every team member assigned to "Cashier" is allowed to act on orders without re-authenticating
Scenario: MTR-009 unrecognized permission entries are skipped without aborting the save
Given the business has a role named "Cashier"
When the admin saves permissions for "Cashier" that include both valid entries and an entry referring to an unrecognized resource
Then the unrecognized entry is silently ignored
And the valid entries are applied to the role
Scenario: MTR-010 multiple roles can be updated in one save and bad entries in one do not block the others
Given the business has roles named "Cashier" and "Manager"
When the admin saves permission changes for both roles in a single operation
And the changes for "Cashier" include some unrecognized entries
Then the valid changes for both "Cashier" and "Manager" are applied
And the unrecognized entries for "Cashier" are silently ignored
Rule: Roles can be deleted
Scenario: MTR-011 deleting a role removes it from the role list and unassigns staff and pending invitations
Given the business has a role named "Cashier"
And some team members are assigned the role "Cashier"
And a pending invitation references the role "Cashier"
When the admin deletes the role "Cashier" without specifying a replacement
Then "Cashier" no longer appears in the business's role list
And those team members no longer have a role assigned
And the pending invitation no longer references "Cashier"
Scenario: MTR-012 deleting a role with a replacement reassigns staff and pending invitations to the replacement
Given the business has roles named "Cashier" and "Front Desk"
And some team members are assigned the role "Cashier"
And a pending invitation references the role "Cashier"
When the admin deletes the role "Cashier" with "Front Desk" as the replacement
Then "Cashier" no longer appears in the business's role list
And those team members are now assigned the role "Front Desk"
And the pending invitation now references the role "Front Desk"
Rule: Only admins can manage roles
Scenario: MTR-013 a non-admin team member cannot create, rename, edit, or delete roles
Given a non-admin team member is signed in to the business instead
When that team member attempts to create a role
Or attempts to rename a role
Or attempts to change a role's permissions
Or attempts to delete a role
Then every such attempt is rejected because they lack the necessary privileges
And the business's roles remain unchanged
Rule: Roles and their permissions are viewable
Scenario: MTR-014 the role list shows only currently-active roles
Given the business has roles named "Cashier", "Manager", and "Cleaner"
And the role "Cleaner" has been deleted
When the admin views the business's role list
Then "Cashier" and "Manager" are shown
And "Cleaner" is not shown
Scenario: MTR-015 viewing a role shows every resource that can be permissioned, defaulting to "No Access"
Given the business has a role named "Cashier" with access granted to only one resource
When the admin views the role "Cashier"
Then every resource that can be permissioned is included
And each resource not explicitly granted access is shown as "No Access"
Scenario: MTR-016 each permission entry offers exactly three access levels: Full Access, Read Only, No Access
When the admin reviews how access can be granted to any resource
Then exactly three access levels are available
And those access levels are Full Access, Read Only, and No Access
Scenario: MTR-017 admins can browse a catalog of permissionable resources with display name and description
When the admin requests the catalog of permissionable resources
Then every resource that can be permissioned is included
And each resource is shown with a display name and a description
Scenario: MTR-018 an admin can view every team member alongside their permissions
Given the business has several team members with various assignments
When the admin views the team along with each member's permissions
Then every team member of the business is shown
And each is shown with what they are allowed to do
Scenario: MTR-019 admin members appear with full access on every resource in the team-permissions view
Given the business has at least one team member with admin privileges
When the admin views the team along with each member's permissions
Then each admin member is shown as having full access on every resource
Scenario: MTR-020 a signed-in user can see their own effective permissions in the business they are currently working in
Given a user is signed in to a business as any kind of team member
When the user requests their own effective permissions
Then the response reflects what that user is allowed to do in that business
Known limitations
- A person has one role, not several.
- The standard-role table shows the defaults at creation; an admin may have changed a business's copy. (verify the display name "Sales Person")
FAQ
A driver can't see invoices they could yesterday. An admin may have edited the Driver role. Check it on Roles & Permissions.
Why does a team member see a page but can't press anything? Their role has Read Only for that area.