Permissions
Aetix Computer uses a faction → role → permission hierarchy. Each faction defines its own roles and maps QBX job grades to those roles.
How It Works
- Faction — A group of jobs that share the same MDT (e.g., LSPD). Defined in
config_factions.lua. - Role — A rank tier within a faction (PATROL, DETECTIVE, COMMAND). Each role maps to specific QBX job grades.
- Permission — A boolean flag (e.g.,
canCreateReport) that controls access to specific features.
When a player opens the MDT, the system checks their QBX job + grade, finds the matching faction and role, then loads the permission set for that role.
Role Hierarchy
The default configuration uses a 3-tier role system for law enforcement factions:
| Role | Grades (Default) | Description |
|---|---|---|
| PATROL | 0 - 6 | Base-level officers. Can search, view profiles, issue citations, and create BOLOs. Cannot write reports, manage warrants, or flag persons. |
| DETECTIVE | 7 - 11 | Investigative officers. Full search and write access. Can manage warrants, flag persons, create reports, manage gang intel and SMT. Cannot approve reports or manage units. |
| COMMAND | 12 - 15 | Command staff. Full access to all features including report approval, unit management, and all administrative functions. |
Permissions Matrix (Law Enforcement)
The following table shows the default permission set for LSPD/BCSO/SASP/SASD/SAHP factions:
| Permission | PATROL | DETECTIVE | COMMAND | Description |
|---|---|---|---|---|
| canSearch | ✓ | ✓ | ✓ | Search persons, vehicles, warrants |
| canViewProfiles | ✓ | ✓ | ✓ | View person/vehicle detail profiles |
| canAddNotes | ✓ | ✓ | ✓ | Add notes to person profiles |
| canCreateBolo | ✓ | ✓ | ✓ | Create new BOLOs |
| canCreateReport | ✗ | ✓ | ✓ | Write incident/arrest reports |
| canManageWarrants | ✗ | ✓ | ✓ | Create, serve, and cancel warrants |
| canFlagPerson | ✗ | ✓ | ✓ | Add/remove flags on person profiles |
| canFlagVehicle | ✓ | ✓ | ✓ | Flag vehicles as stolen/BOLO |
| canApproveReport | ✗ | ✗ | ✓ | Approve/reject submitted reports |
| canManageGangs | ✗ | ✓ | ✓ | Manage gang intel profiles |
| canManageUnits | ✗ | ✗ | ✓ | Manage dispatch units |
| canViewAllCalls | ✓ | ✓ | ✓ | View all dispatch calls |
| canIssueCitations | ✓ | ✓ | ✓ | Issue citations using penal codes |
| canSendMessages | ✓ | ✓ | ✓ | Send real-time messages |
| canViewIncidents | ✓ | ✓ | ✓ | View incident history archive |
| canManageSMT | ✗ | ✓ | ✓ | Manage SMT (Supervised Management Team) data |
Special Factions
DOC and SAFD have reduced module access compared to law enforcement:
DOC (Department of Corrections)
| Property | Value |
|---|---|
| Job | doc |
| Modules | dashboard, dispatch, persons, vehicles, bolos, messages, units |
| Missing Modules | warrants, reports, citations, gangintel, incidents |
SAFD (San Andreas Fire Department)
| Property | Value |
|---|---|
| Job | ambulance |
| Modules | dashboard, dispatch, persons, vehicles, messages, units |
| Missing Modules | warrants, bolos, reports, citations, gangintel, incidents |
Adding a Custom Faction
To add a new faction, add a new entry to Config.Factions in config_factions.lua:
Example: Custom Security Faction
{
id = 'security',
label = 'Private Security',
agency = 'SEC',
jobs = { 'security', 'bodyguard' },
modules = { 'dashboard', 'dispatch', 'persons', 'vehicles', 'messages', 'units' },
roles = {
{ id = 'GUARD', label = 'Guard', grades = { 0, 1, 2 } },
{ id = 'SUPERVISOR', label = 'Supervisor', grades = { 3, 4, 5 } },
},
permissions = {
GUARD = {
canSearch = true, canViewProfiles = true, canAddNotes = false,
canCreateBolo = false, canCreateReport = false, canManageWarrants = false,
canFlagPerson = false, canFlagVehicle = false, canApproveReport = false,
canManageGangs = false, canManageUnits = false, canViewAllCalls = true,
canIssueCitations = false, canSendMessages = true, canViewIncidents = false,
canManageSMT = false,
},
SUPERVISOR = {
canSearch = true, canViewProfiles = true, canAddNotes = true,
canCreateBolo = false, canCreateReport = false, canManageWarrants = false,
canFlagPerson = false, canFlagVehicle = false, canApproveReport = false,
canManageGangs = false, canManageUnits = true, canViewAllCalls = true,
canIssueCitations = false, canSendMessages = true, canViewIncidents = false,
canManageSMT = false,
},
},
}