Powered by NovaDocs

Permissions and roles

3 min readUpdated Aug 5, 2026

For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to page URLs; this page is available as Markdown.

Permissions and roles


Roles

  • admin – Full access to all sections, settings, user management, logs, and APIs that are restricted to admin.
  • client (default) – Limited to what you assign: typically client dashboard, settings, and only the commissions/boards you assign. No access to admin-only pages unless you grant specific permissions.

Other role names can exist; the app typically treats “admin” as the superuser and everyone else as non-admin for “view all” logic (e.g. list of commissions, list of users).


Permissions object

Each user has a permissions field (JSON). It is a nested object that controls access to sections. Typical shape:

  • paymentsview, full (e.g. access to Admin / payments page and creating payment links).
  • commissionsview, create, full (commission-admin list and create/edit/delete; commission client view is also gated by assigned commissions).
  • calendarview, full (todo/calendar page).
  • listsview, full (boards/list page); can be further limited by assigned boards.
  • customersview, full (customer management page).
  • logview (audit log page).
  • hubview, create, full (hub page).

If a user is admin, they bypass these checks and can access everything. For non-admins, the server checks both:

  • Permission for that section (e.g. perms.commissions.view or perms.commissions.full for commission-admin), and/or
  • Assignment (e.g. at least one assignedBoardIds for list, or at least one assignedCommissionIds for commission client view).

Assignments (restrict what a user sees)

  • assignedBoardIds – Array of board IDs. The user can access those boards (and only those) on the Lists page, unless they are admin or have “view all” for lists.
  • assignedCommissionIds – Array of commission IDs. The user can open the Commission (client) page and see only those commissions. The list API (GET /api/commissions) returns only commissions where the user is the client or the commission id is in assignedCommissionIds; admins get all.
  • clientId on a commission – The “client” user for that commission; they can see it on the commission client view if they have access to commissions (by assignment or permission).

So: “give a client access to only one commission” = set assignedCommissionIds to [thatCommissionId] and do not grant commissions “view all” permission. The API already filters the list and single-commission access by assignment and clientId.


Page access summary

PageWho can access
login, reset-passwordPublic
client-dashboardAll logged-in
settingsAll logged-in
hubAdmin, or hub permission
admin (payments)Admin, or payments permission
commission-adminAdmin, or commissions view/full
commission (client)Admin, or commissions view/full, or at least one assigned commission
listAdmin, or lists view/full, or at least one assigned board
todoAdmin, or calendar view/full
customerAdmin, or customers view/full
logAdmin, or log view

API endpoints mirror this: e.g. GET /api/commissions returns all only for admin; for others, only commissions where clientId = user or id in assignedCommissionIds. Same idea for boards and other resources.

Was this helpful?