# Permissions & Administration

Ce chapitre explique qui peut faire quoi avec l'échelle, et les outils des administrateurs.

## Actions contrôlées

| Action | Ce qu'elle autorise |
|---|---|
| `deploy` | Déployer et replier l'échelle |
| `enter` | Monter au poste, dans la nacelle ou sur l'échelle |
| `control` | Manœuvrer l'échelle |
| `lock` | Verrouiller les portes du véhicule |
| `locker` | Ouvrir les coffres, allumer l'écran arrière |

## Trois façons de gérer les permissions

1. **Tout le monde** : `Config.JobRestriction = false` (par défaut), ou framework `standalone`.
2. **Par métier et par grade** : `Config.JobRestriction = true` et `Config.AuthorizedJobs` (voir [Configuration générale](configuration-generale)). Avec QBCore / QBox, `Config.RequireOnDuty = true` exige d'être en service.
3. **Votre propre règle** : `Config.CustomPermission`, une fonction qui reçoit le joueur, l'action et l'échelle, et retourne `false` pour refuser. Elle remplace la restriction par métier.

💡 Toutes les vérifications sont faites **côté serveur** : un joueur ne peut pas les contourner en modifiant son client.

## Commande d'administration

Autorisation (dans `server.cfg`) :

```cfg
add_ace group.admin command.mladmin allow
```

| Commande | Effet |
|---|---|
| `/mladmin list` | Liste les échelles déployées et leurs occupants |
| `/mladmin evict <netId\|cl> [all\|op\|seat\|b1\|b2\|b3\|c1\|c2]` | Fait descendre les occupants (tous par défaut) ; `op` retire l'opérateur |
| `/mladmin del <netId\|cl>` | Replie instantanément l'échelle et libère le véhicule |

`cl` désigne l'échelle la plus proche de l'administrateur. La commande fonctionne aussi depuis la console serveur (avec un `netId`).

## Dépannage joueur

`/mlexit` détache le joueur (échelle, poste ou nacelle) s'il reste bloqué.