HomeDocsAdministrationRoles & Permissions
Administration

Roles & Permissions

Define user roles and control access to servers and features.

bthavanishBy bthavanish

Roles and Permissions

Role System

Each user has one role. Roles define what actions the user can perform. The system includes two built-in roles that cannot be deleted:

  • admin (full access to everything)
  • user (standard user access)

Admins can create custom roles with specific permission sets.

Role Model

FieldTypeDescription
idIntAuto-incrementing ID
nameStringUnique internal name
displayNameStringDisplay name
descriptionStringDescription
isAdminBooleanGrants admin privileges
permissionsStringJSON array of permission strings
isSystemBooleanPrevents deletion
sortOrderIntDisplay order

Managing Roles

List Roles

GET /api/v2/admin/roles

Create Role

POST /api/v2/admin/roles
{
  "name": "moderator",
  "displayName": "Moderator",
  "description": "Can manage servers but not users",
  "permissions": ["airlink.admin.servers.view", "airlink.admin.servers.update"],
  "isAdmin": false
}

Update Role

PUT /api/v2/admin/roles/:id
{ "permissions": ["airlink.admin.servers.*"] }

Delete Role

DELETE /api/v2/admin/roles/:id

System roles (admin, user) cannot be deleted.

Permission Tree

Permissions are dot-separated and hierarchical. A wildcard .* grants all sub-permissions.

Server Permissions

PermissionDescription
server.*All server operations
server.viewView servers
server.startStart servers
server.stopStop servers
server.restartRestart servers
server.filesAccess server files
server.settingsChange server settings

Admin Permissions

PermissionDescription
admin.*All admin operations
airlink.admin.addons.*All addon operations
airlink.admin.addons.viewView addons
airlink.admin.addons.toggleEnable/disable addons
airlink.admin.addons.reloadReload addons
airlink.admin.addons.storeAccess addon store
airlink.admin.addons.installInstall addons
airlink.admin.addons.settingsConfigure addons
airlink.admin.addons.commandsRun addon commands
airlink.admin.analytics.viewView analytics
airlink.admin.users.*All user operations
airlink.admin.users.viewView users
airlink.admin.users.createCreate users
airlink.admin.users.editEdit users
airlink.admin.users.deleteDelete users
airlink.admin.nodes.*All node operations
airlink.admin.nodes.viewView nodes
airlink.admin.nodes.createCreate nodes
airlink.admin.nodes.updateUpdate nodes
airlink.admin.nodes.deleteDelete nodes
airlink.admin.servers.*All server admin operations
airlink.admin.servers.viewView all servers
airlink.admin.servers.createCreate servers
airlink.admin.servers.updateUpdate servers
airlink.admin.servers.deleteDelete servers
airlink.admin.apikeys.*All API key operations
airlink.admin.apikeys.viewView API keys
airlink.admin.apikeys.createCreate API keys
airlink.admin.apikeys.deleteDelete API keys
airlink.admin.apikeys.editEdit API keys
airlink.admin.api.docs.viewView API documentation
airlink.admin.menu.mainAccess admin menu
airlink.admin.overview.mainAccess admin overview
airlink.admin.overview.checkForUpdatesCheck for updates
airlink.admin.overview.performUpdatePerform updates
airlink.admin.playerstats.viewView player stats
airlink.admin.databases.*All database operations
airlink.admin.databases.viewView databases
airlink.admin.databases.createCreate databases
airlink.admin.databases.deleteDelete databases
airlink.admin.databases.testTest database connections

API Permissions

PermissionDescription
airlink.api.keys.*All API key operations
airlink.api.keys.viewView API keys
airlink.api.keys.createCreate API keys
airlink.api.keys.deleteDelete API keys
airlink.api.keys.editEdit API keys
airlink.api.servers.*All server API operations
airlink.api.servers.readRead servers via API
airlink.api.servers.createCreate servers via API
airlink.api.servers.updateUpdate servers via API
airlink.api.servers.deleteDelete servers via API
airlink.api.users.*All user API operations
airlink.api.users.readRead users via API
airlink.api.users.createCreate users via API
airlink.api.users.updateUpdate users via API
airlink.api.users.deleteDelete users via API
airlink.api.nodes.*All node API operations
airlink.api.nodes.readRead nodes via API
airlink.api.nodes.createCreate nodes via API
airlink.api.nodes.updateUpdate nodes via API
airlink.api.nodes.deleteDelete nodes via API
airlink.api.settings.*All settings API operations
airlink.api.settings.readRead settings via API
airlink.api.settings.updateUpdate settings via API
airlink.api.images.*All image API operations
airlink.api.images.readRead images via API
airlink.api.images.createCreate images via API
airlink.api.images.updateUpdate images via API
airlink.api.images.deleteDelete images via API
airlink.api.locations.*All location API operations
airlink.api.locations.readRead locations via API
airlink.api.locations.createCreate locations via API

Addon Permissions

Addons can register custom permissions in the addon.{slug}.* namespace. These are validated to ensure they stay within the addon’s namespace.

Sub-User Permissions

Sub-user permissions are separate from role permissions. They are granted per-server by the server owner. See features/users.md for the full list.

Permission Resolution

  1. Check if user is admin (full access)
  2. Check user’s role permissions (grants access based on role)
  3. For server-specific operations, check sub-user permissions.