Roles & permissions
FightReg checks every action against a permission slug: 67 permissions across 20 modules, distributed over twelve roles. On top of that, every staff member can be granted individual rights per competition, beyond their role.
rolessystem.manageRole overview
A role is the baseline. For a single competition it is granted through competition_staff — a trainer can run a mat for one day without losing their own role. The figure behind each role is counted, not estimated: it comes from the assignments in install.php.
Super Administrator
super_admin
Everything. The only role holding system.manage — platform settings, user administration, mail server, keys for speech and AI.
platform
Competition Admin
admin
One competition, end to end: categories, participants, brackets, mats, billing, settings. Without system.manage, users.edit and without creating, deleting or duplicating a competition.
base role · assignable per competition · competition
Trainer
trainer
Registers the athletes of their club, maintains them, sees start lists, brackets and their own invoice — and creates the club’s corner coaches.
base role · club
Coach
coach
The coach’s rights without the invoice: they look after athletes on the day, they do not pay. Corner coaches are created by the trainer, not by another coach.
base role · club
Head Judge
head_judge
The widest role on competition day: generate, edit, score and revert brackets, manage and assign mats, run forms sessions.
assignable per competition · competition
Ring Manager
ring_manager
Runs a mat: order, scoring, status and results — without generating the brackets themselves.
assignable per competition · competition
Judge
judge
Scores fights and forms at the mat, sees bracket, order and start list. No changes to structure or master data.
assignable per competition · competition
Announcer
announcer
Runs the announcement queue, speaks or triggers announcements, and sets voice and breaks.
assignable per competition · competition
Check-in Staff
checkin_staff
Admission and weigh-in: call participants, check them in, review documents — nothing else.
assignable per competition · competition
Billing
billing
View, edit and send invoices, maintain surcharges and discounts, read the statistics — and print through the print agent.
assignable per competition · competition
Observer
observer
Watches and changes nothing: categories, participants, start lists, brackets, mats. The role for guests, press and federation representatives.
assignable per competition · competition
Participant
participant
The athlete’s own account. Almost nothing in the permission table — what they see belongs to them and hangs off their account, not off a permission.
base role · own account
Module comparison
| Module | SA | VA | TR | CO | SO | RM | KR | AN | CI | RW | BE | TN |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| announce (4) | ||||||||||||
| arenas (6) | ||||||||||||
| billing (6) | ||||||||||||
| brackets (7) | ||||||||||||
| categories (4) | ||||||||||||
| checkin (4) | ||||||||||||
| coach (2) | ||||||||||||
| competition (7) | ||||||||||||
| forms (3) | ||||||||||||
| notifications (1) | ||||||||||||
| organizer (2) | ||||||||||||
| participants (3) | ||||||||||||
| print (1) | ||||||||||||
| schools (3) | ||||||||||||
| screen (1) | ||||||||||||
| settings (5) | ||||||||||||
| startlists (2) | ||||||||||||
| system (1) | ||||||||||||
| translations (2) | ||||||||||||
| users (3) |
Counted from install.php (per-role assignment) against src/Config/Permissions.php (the 67 slugs).
All 67 permissions
The slug is what counts: requirePermission() checks it in the backend, can() in the frontend. The right-hand column lists the roles holding it by default — individual per-competition rights come on top.
announce (4)
| Slug | Meaning | Roles |
|---|---|---|
announce.view | View announcements | SA, VA, AN |
announce.manage | Manage announcements | SA, VA, AN |
announce.speak | Play TTS | SA, VA, AN |
announce.settings | TTS settings | SA, VA, AN |
arenas (6)
| Slug | Meaning | Roles |
|---|---|---|
arenas.view | View arenas | SA, VA, TR, CO, SO, RM, KR, AN, BE, TN |
arenas.manage | Manage arenas | SA, VA, SO, RM |
arenas.assign | Assign categories | SA, VA, SO, RM |
arenas.status | Change arena status | SA, VA, SO, RM, KR |
arenas.notify | Arena notification | SA, VA |
arenas.results | Score at the arena | SA, VA, SO, RM, KR |
billing (6)
| Slug | Meaning | Roles |
|---|---|---|
billing.view | View invoices | SA, VA, TR, RW |
billing.edit | Edit invoices | SA, VA, RW |
billing.send | Send invoices | SA, VA, RW |
billing.surcharges | Manage surcharges | SA, VA, RW |
billing.discounts | Manage discounts | SA, VA, RW |
billing.stats | Billing statistics | SA, VA, RW |
brackets (7)
| Slug | Meaning | Roles |
|---|---|---|
brackets.view | View brackets | SA, VA, TR, CO, SO, RM, KR, AN, BE |
brackets.edit | Edit brackets | SA, VA, SO |
brackets.generate | Generate bracket | SA, VA, SO |
brackets.score | Score matches | SA, VA, SO, RM, KR |
brackets.revert | Revert match result | SA, VA, SO |
brackets.settings | Bracket settings | SA, VA, SO |
brackets.fightorder | View fight order | SA, VA, TR, CO, SO, RM, KR |
categories (4)
| Slug | Meaning | Roles |
|---|---|---|
categories.view | View categories | SA, VA, TR, CO, SO, RM, CI, BE |
categories.edit | Edit categories | SA, VA |
categories.merge | Merge categories | SA, VA |
categories.status | Change category status | SA, VA, SO, RM |
checkin (4)
| Slug | Meaning | Roles |
|---|---|---|
checkin.view | View check-in | SA, VA, CI |
checkin.perform | Perform check-in | SA, VA, CI |
checkin.call | Call participant | SA, VA, CI |
checkin.documents | Upload documents | SA, VA, TR, CO, CI |
coach (2)
| Slug | Meaning | Roles |
|---|---|---|
coach.manage | Create and manage coaches | SA, VA, TR |
coach.assign | Assign participants to coaches | SA, VA, TR, CO |
competition (7)
| Slug | Meaning | Roles |
|---|---|---|
competition.view | View competition | SA, VA, TR, CO, SO, RM, KR, AN, CI, RW, BE, TN |
competition.edit | Edit competition | SA, VA |
competition.create | Create competition | SA |
competition.delete | Delete competition | SA |
competition.duplicate | Duplicate competition | SA |
competition.stats | View statistics | SA, VA |
competition.dashboard | View dashboard | SA, VA |
forms (3)
| Slug | Meaning | Roles |
|---|---|---|
forms.view | View forms scoring | SA, VA, SO, RM, KR, AN, BE |
forms.score | Score forms | SA, VA, SO, RM, KR |
forms.manage | Manage forms sessions | SA, VA, SO |
notifications (1)
| Slug | Meaning | Roles |
|---|---|---|
notifications.send | Send notifications | SA, VA |
organizer (2)
| Slug | Meaning | Roles |
|---|---|---|
organizer.view | View organizer | SA, VA, RW |
organizer.edit | Edit organizer | SA, VA |
participants (3)
| Slug | Meaning | Roles |
|---|---|---|
participants.view | View participants | SA, VA, TR, CO, SO, RM, AN, CI, BE |
participants.edit | Edit participants | SA, VA, TR, CO |
participants.enroll | Enroll participants | SA, VA, TR, CO |
print (1)
| Slug | Meaning | Roles |
|---|---|---|
print.agent | Configure print agent | SA, VA, RW |
schools (3)
| Slug | Meaning | Roles |
|---|---|---|
schools.view | View schools | SA, VA, TR, CO |
schools.approve | Approve schools | SA, VA |
schools.manage | Manage schools | SA, VA |
screen (1)
| Slug | Meaning | Roles |
|---|---|---|
screen.manage | Manage main screen | SA, VA |
settings (5)
| Slug | Meaning | Roles |
|---|---|---|
settings.view | View settings | SA, VA |
settings.edit | Edit settings | SA, VA |
settings.ai | AI settings | SA, VA |
settings.languages | Manage languages | SA, VA |
settings.mail | Email settings | SA, VA |
startlists (2)
| Slug | Meaning | Roles |
|---|---|---|
startlists.view | View startlists | SA, VA, TR, CO, SO, RM, KR, AN, CI, BE |
startlists.reorder | Reorder startlists | SA, VA |
system (1)
| Slug | Meaning | Roles |
|---|---|---|
system.manage | System management | SA |
translations (2)
| Slug | Meaning | Roles |
|---|---|---|
translations.edit | Edit translations | SA, VA |
translations.invites | Invite translators | SA, VA |
users (3)
| Slug | Meaning | Roles |
|---|---|---|
users.view | View users | SA, VA |
users.edit | Manage users | SA |
users.staff | Assign staff | SA, VA |
Two special cases
Federation admin
Is not in roles. Whoever administers a federation is listed in federation_admins — the responsibility hangs off the federation, not off a role. That is why this page counts twelve roles and still talks about federation administration.
Spectator
Is not a role but the absence of a login. The live page, the venue map and mat status are deliberately open; start lists appear there only once the organiser releases them.
competition.view is not a permission but a membership marker: every role has it and nothing checks it. It says “this role belongs to a competition” — in one place instead of twelve lists.