Skip to main content

Roles & Permissions

Screenshots & Videos

Place real assets under /images and /videos using root paths.

📌 Why Roles & Permissions?

Least-privilege by default, with auditable exceptions. Role baselines keep things simple; direct grants cover edge cases; event scoping reduces operational risk.

Control access to the platform using roles and granular permission strings. Permissions determine which actions a user can perform within each module.

Interface Preview

User Roles

Quick Start

  1. Go to Organizer > Roles.
  2. Create or edit a role.
  3. Toggle permissions as needed and save.

Overview

Access control is powered by Spatie Laravel Permission. Users inherit permissions from their role, and admins can grant extra direct permissions per user.

  • Roles: map sets of permissions to users.
  • Permissions: granular strings controlling specific actions.
  • Direct Permissions: optional overrides for individual users.

Where Permissions Live

LocationPurpose
config/roles_permissions.phpSource of truth for all permission strings and role → permission mappings
database/seeders/RolePermissionSeeder.phpSeeder that creates missing permissions, roles, and syncs them from config

Naming Convention

Permissions follow subject.action format. Examples:

SubjectActions
eventviewAny, view, create, edit, delete, restore, forceDelete
guestviewAny, create, edit, delete
scannerscan
badgeviewAny, create, edit, print, delete
organizer, printer, event-managervarious administrative actions
email-template, automated-event-emailviewAny, edit, send
statisticviewAny
form, form-field, venue, gate, workshop, ticket, orderstandard module actions

Tip: In the UI, role-based permissions are read-only (labeled “from role”); direct toggles can be granted individually.


Default Roles

RoleRole PermissionsDirect Permissions
adminall permissionsall permissions
organizerpreference.edit, dashboard.view, event.viewAny, event.viewbroad operational access across managed events
event-managerpreference.edit, dashboard.view, event.viewAny, event.viewoperational access on assigned events
scannerdashboard.view, event.viewAny, event.view, scanner.scannone by default
printerpreference.edit, dashboard.view, event.viewAny, event.view, badge.viewAnybadge.create, badge.edit, badge.print, badge.delete, guest.viewAny

Syncing Roles and Permissions

  • After updating roles or permissions in configuration, roles must be synced to reflect the changes.
  • Direct user permissions are not affected by syncing.

UI Behavior and Scoping

  • Admin-only Organizer selector: Limits which events appear and which permissions can be toggled for Event Managers, Scanners, or Printers.
  • Disabled toggles: Permissions may be disabled because they are role-based or restricted by Organizer.
  • Event assignment: Event Managers, Scanners, and Printers must select one or more events for access.

Updating a User’s Permissions

  1. Navigate to User Management > Relevant Tab (Organizer/Event Manager/Scanner/Printer).
  2. Edit the user.
  3. Adjust toggles in the Permissions section:
    • Checked and disabled = granted via role
    • Enabled toggles = direct permissions you can grant/revoke
  4. Save changes.

Troubleshooting

IssueResolution
“Not authorized”Ensure your account has the corresponding viewAny permission for that section.
Toggles won’t enableSelected Organizer restricts permission; pick a different Organizer or update its policy.
Scanner cannot scanConfirm scanner.scan is granted and user is assigned to the correct events.
Missing email featuresVerify email-template.* and email.send permissions are granted as needed.

Last updated: 2025-10-09