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

  1. Faction — A group of jobs that share the same MDT (e.g., LSPD). Defined in config_factions.lua.
  2. Role — A rank tier within a faction (PATROL, DETECTIVE, COMMAND). Each role maps to specific QBX job grades.
  3. 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:

RoleGrades (Default)Description
PATROL0 - 6Base-level officers. Can search, view profiles, issue citations, and create BOLOs. Cannot write reports, manage warrants, or flag persons.
DETECTIVE7 - 11Investigative officers. Full search and write access. Can manage warrants, flag persons, create reports, manage gang intel and SMT. Cannot approve reports or manage units.
COMMAND12 - 15Command 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
canSearchSearch persons, vehicles, warrants
canViewProfilesView person/vehicle detail profiles
canAddNotesAdd notes to person profiles
canCreateBoloCreate new BOLOs
canCreateReportWrite incident/arrest reports
canManageWarrantsCreate, serve, and cancel warrants
canFlagPersonAdd/remove flags on person profiles
canFlagVehicleFlag vehicles as stolen/BOLO
canApproveReportApprove/reject submitted reports
canManageGangsManage gang intel profiles
canManageUnitsManage dispatch units
canViewAllCallsView all dispatch calls
canIssueCitationsIssue citations using penal codes
canSendMessagesSend real-time messages
canViewIncidentsView incident history archive
canManageSMTManage SMT (Supervised Management Team) data

Special Factions

DOC and SAFD have reduced module access compared to law enforcement:

DOC (Department of Corrections)

PropertyValue
Jobdoc
Modulesdashboard, dispatch, persons, vehicles, bolos, messages, units
Missing Moduleswarrants, reports, citations, gangintel, incidents

SAFD (San Andreas Fire Department)

PropertyValue
Jobambulance
Modulesdashboard, dispatch, persons, vehicles, messages, units
Missing Moduleswarrants, 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,
        },
    },
}