> ## Documentation Index
> Fetch the complete documentation index at: https://docs.temacstore.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Como Configurar Permissões de Acesso em Scripts FiveM

> Aprenda a configurar permissões de acesso nos scripts FiveM usando ACE nativo, grupos de servidor e integração com jobs do framework.

O sistema de permissões dos scripts FiveM utiliza o mecanismo nativo de ACE (Access Control Entries) do FiveM, combinado com grupos do framework. Isso permite que você controle com precisão quais jogadores e funções têm acesso a cada comando ou funcionalidade.

## Modelos de Permissão

Os scripts suportam dois modelos de permissão que podem ser usados juntos:

<CardGroup cols={2}>
  <Card title="ACE do FiveM" icon="lock" href="#ace-do-fivem">
    Permissões nativas do servidor, configuradas no server.cfg.
  </Card>

  <Card title="Jobs do Framework" icon="briefcase" href="#jobs-e-grupos">
    Baseado no job/grupo do personagem no ESX ou QBCore.
  </Card>
</CardGroup>

## ACE do FiveM

O FiveM possui um sistema de ACE nativo que você configura no `server.cfg`. Os scripts utilizam este sistema para comandos restritos:

```cfg server.cfg theme={null}
# Cria o grupo admin
add_principal identifier.steam:110000112345678 group.admin

# Concede permissão ao grupo admin
add_ace group.admin meu-script.admin allow
add_ace group.admin meu-script.moderator allow

# Concede permissão individual
add_ace identifier.steam:110000112345678 meu-script.admin allow
```

<Note>
  Substitua `110000112345678` pelo Steam ID hexadecimal do jogador. Você pode encontrar o identificador no console do servidor quando o jogador conecta.
</Note>

### Nós de Permissão Disponíveis

Cada script define seus próprios nós de ACE. Os mais comuns são:

| Nó ACE                 | Acesso Concedido                           |
| ---------------------- | ------------------------------------------ |
| `meu-script.admin`     | Todos os comandos de administração         |
| `meu-script.moderator` | Comandos de moderação (sem ban permanente) |
| `meu-script.staff`     | Acesso a ferramentas de suporte            |
| `meu-script.vip`       | Funcionalidades exclusivas para VIP        |

## Jobs e Grupos

Alguns scripts verificam o job ou grupo do personagem para liberar funcionalidades:

```lua config.lua theme={null}
Config.Jobs = {
    police = { label = 'Polícia', minGrade = 0 },
    ambulance = { label = 'SAMU', minGrade = 2 },
    mechanic = { label = 'Mecânico', minGrade = 0 },
}
```

<Tabs>
  <Tab title="ESX">
    No ESX, o script verifica `ESX.GetPlayerData().job.name` e `job.grade` para validar o acesso.

    ```lua theme={null}
    -- Verificação automática pelo script
    -- Nenhuma configuração adicional necessária além do Config.Jobs
    ```
  </Tab>

  <Tab title="QBCore">
    No QBCore, o script usa `QBCore.Functions.GetPlayerData().job.name` e `job.grade.level`.

    ```lua theme={null}
    -- O script detecta automaticamente o QBCore
    -- Configure os nomes de jobs conforme definidos no seu servidor
    ```
  </Tab>
</Tabs>

## Configuração de Permissões por Funcionalidade

Você pode configurar permissões específicas no `config.lua`:

```lua config.lua theme={null}
Config.Permissions = {
    canUseAdminMenu = 'meu-script.admin',    -- Nó ACE necessário
    canSpawnVehicle = 'meu-script.staff',
    canViewLogs = 'meu-script.moderator',
    canBanPlayer = 'meu-script.admin',
}
```

<Tip>
  Defina `Config.Permissions.canUseAdminMenu = false` para desativar completamente uma funcionalidade.
</Tip>

## Testando Permissões

Para verificar se as permissões estão configuradas corretamente:

1. Ative `Config.Debug = true` no `config.lua`
2. Conecte ao servidor com o identificador configurado
3. Execute o comando restrito — o console do servidor mostrará se o acesso foi concedido ou negado
4. Verifique as mensagens de log no console do servidor para confirmar se o acesso foi registrado corretamente
