FearlessStudios

LUX DOT permissions

Optionally authorize cabinet work from the player's active LUX civilian service.

LUX permission checks are disabled by default. Enable them only after your community is configured and the matched civilian service type supplies the road_status module. No LUX integration is needed for normal ACE permissions.

Choose how LUX combines with permissions

Config.LuxPermissions = {
    enabled = true,
    mode = 'require',
    maxAgeSeconds = 5,
}
ModeCabinet, editing, linking and repair
requireNeeds both normal permissions and LUX DOT approval.
replaceLUX approval replaces normal operational checks.
eitherNormal permission or LUX approval is sufficient.

Administration remains controlled by its existing ACE. LUX never grants physical sabotage. Sabotage and its service-panel access retain their normal cabinet/sabotage checks. In either mode, a public normal permission can allow an action even if LUX is unavailable; use require or replace if LUX approval must be mandatory.

Set up the connection

The built-in provider reads the existing server-only lux_api_key convar. Configure that secret privately using your server's normal secret management; never use a replicated setr value or put a key into public/client files.

The current implementation has no selectable bridge, resource or export settings. Only enabled, mode and maxAgeSeconds are supported here.

How a player is matched

The server matches the player's Discord identifier to exactly one active civilian-service record. Its service code must match a civilian service type whose module list includes the exact value road_status. An unrelated eligible service type does not authorize the player.

Missing Discord identity, no active service, ambiguous multiple active services, missing modules or stale responses do not supply LUX approval. The check uses LUX's active civilian service; it does not independently verify a character selected by another in-game framework.

Refresh and failure behavior

The provider makes read-only requests for active services and service types, normally every three seconds. A shared snapshot serves all players; no credentials or response bodies are logged by this provider. Redirects are disabled.

Observations expire within the configured maximum age, clamped to 0–5 seconds. Keep five seconds for normal polling; shorter values can create authorization gaps. Failures invalidate the snapshot and back off; there is no stale-success fallback.

The server rechecks permissions during actions and sessions. UI availability refreshes too, but is not the security check. Polling means service changes can take up to the allowed observation age to be reflected.

This integration sends no incidents and makes no LUX writes. Live FiveM/LUX behavior was not verified during this documentation update.