# Rôles et permissions

{% hint style="warning" %}
Cette section s'adresse aux **propriétaires** d'instances QuantumLogs.
{% endhint %}

QuantumLogs utilise les **rôles Discord** pour gérer les permissions d'accès au dashboard. Toute la configuration se fait depuis l'interface web.

## Niveaux d'accès

### Propriétaire (Owner)

Le propriétaire est le compte Discord défini lors de la création de l'instance. Il a accès à :

* Toutes les pages du dashboard
* La gestion des extensions (activation, désactivation, configuration)
* La configuration de l'authentification Discord
* Les pages d'administration (Extensions, Connector Health)

{% hint style="info" %}
Le propriétaire bypass toutes les vérifications de rôles. Il a toujours accès à tout, même si aucun rôle n'est configuré.
{% endhint %}

### Staff (membres avec rôle requis)

Les membres Discord ayant le **Required Role** ont accès au dashboard. Par défaut, ils voient :

* La consultation des **logs** (toujours accessible)
* **QuantumQL**
* Le **journal**

Les autres extensions (Analytics, Kanban, Pterodactyl, etc.) peuvent être **restreintes par rôle individuellement** via le champ `requiredDiscordRole` dans la configuration de chaque extension (voir ci-dessous).

### Admin (membres avec Admin Role)

Si un **Admin Role ID** est configuré, les utilisateurs ayant ce rôle bypasse les restrictions par extension. Ils ont accès à toutes les extensions, sans avoir besoin du rôle spécifique de chaque extension.

{% hint style="info" %}
L'Admin Role ne donne **pas** accès à la page Administration / configuration des extensions. Seul le propriétaire y a accès.
{% endhint %}

### Membres sans rôle

Les membres Discord qui n'ont pas le rôle requis voient la page **"Mauvais rôle"** et ne peuvent pas accéder au dashboard.

## Configurer les rôles depuis l'interface

La configuration des rôles se fait dans **Administration > Extensions**, section **Discord Authentication**.

### Étape 1 : Ouvrir la configuration Discord

1. Connectez-vous en tant que propriétaire
2. Allez dans **Administration > Extensions**
3. Trouvez **Discord Authentication** dans les modules principaux
4. Cliquez sur l'icône **configuration** (engrenage)

### Étape 2 : Configurer les champs

L'éditeur de configuration affiche les champs suivants :

| Champ                | Description                                                                                                     | Exemple               |
| -------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------- |
| **Guild ID**         | ID de votre serveur Discord. Restreint l'accès aux membres de ce serveur.                                       | `1335950166645276732` |
| **Required Role ID** | ID du rôle Discord obligatoire pour accéder au dashboard. Si vide, tous les membres du serveur peuvent accéder. | `1356921755176013886` |
| **Admin Role ID**    | ID du rôle admin Discord. Les utilisateurs avec ce rôle bypasse les autres vérifications de rôle.               | `1356921755176013887` |

### Étape 3 : Obtenir un ID de rôle Discord

1. Ouvrez **Discord** sur PC
2. Allez dans **Paramètres utilisateur > Avancé > Mode développeur** : activez-le
3. Dans les paramètres de votre serveur Discord, allez dans **Rôles**
4. Clic droit sur le rôle souhaité > **Copier l'identifiant**

### Étape 4 : Sauvegarder

Cliquez sur **Sauvegarder** dans l'éditeur. Les changements sont appliqués immédiatement, sans redémarrage.

## Exemple : 2 niveaux d'accès (Fondateur + Staff)

Voici comment configurer un accès fondateur avec tous les droits et un accès staff limité aux logs :

### 1. Créer les rôles Discord

Sur votre serveur Discord, créez deux rôles :

* **Fondateur** (ou utilisez votre rôle existant)
* **Staff QuantumLogs**

### 2. Configurer QuantumLogs

Dans la configuration Discord Authentication :

| Champ                | Valeur                             |
| -------------------- | ---------------------------------- |
| **Guild ID**         | L'ID de votre serveur Discord      |
| **Required Role ID** | L'ID du rôle **Staff QuantumLogs** |
| **Admin Role ID**    | *(laisser vide)*                   |

### 3. Résultat

| Utilisateur                                | Accès                                                                                                                       |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| **Vous (propriétaire)**                    | Accès complet : logs, extensions, configuration, administration                                                             |
| **Staff avec le rôle "Staff QuantumLogs"** | Accès aux logs, QuantumQL, analytics, journal, kanban. Pas d'accès à la configuration des extensions ni à l'administration. |
| **Membres Discord sans le rôle**           | Page "Mauvais rôle", aucun accès                                                                                            |

{% hint style="info" %}
Le propriétaire n'a **pas besoin** d'avoir le rôle Staff. Son Discord ID lui donne automatiquement accès à tout.
{% endhint %}

## Tableau récapitulatif des accès

| Configuration                      | Owner         | Membre avec rôle requis         | Membre sans rôle             |
| ---------------------------------- | ------------- | ------------------------------- | ---------------------------- |
| Sans Guild ID                      | Accès complet | Pas d'accès (propriétaire seul) | Pas d'accès                  |
| Guild ID seul (sans Required Role) | Accès complet | Accès (si membre du serveur)    | Accès (si membre du serveur) |
| Guild ID + Required Role           | Accès complet | Accès (si membre + rôle)        | Refusé                       |

## Restreindre l'accès aux extensions par rôle

Chaque extension dispose d'un champ **`requiredDiscordRole`** dans sa configuration. Ce champ permet de limiter l'accès à cette extension à un rôle Discord spécifique.

### Fonctionnement

* **Champ vide** (par défaut) : l'extension est accessible à **tous les membres authentifiés** (qui ont le Required Role global)
* **Champ renseigné** avec un ID de rôle : seuls les membres ayant **ce rôle spécifique** (ou le Admin Role, ou le propriétaire) peuvent accéder à l'extension

### Exception : les Logs

La section **Logs** est la seule partie qui n'est pas soumise à cette restriction par extension. Tout membre ayant le **Required Role** global (configuré dans Discord Authentication) a automatiquement accès aux logs. C'est le socle de base de QuantumLogs.

### Configurer une restriction par rôle

1. Allez dans **Administration > Extensions**
2. Cliquez sur l'icône **configuration** (engrenage) de l'extension à restreindre
3. Renseignez le champ **requiredDiscordRole** avec l'ID du rôle Discord
4. **Sauvegardez**

### Exemple : accès Analytics limité aux fondateurs

Si vous voulez que seuls les fondateurs voient les analytics, mais que tout le staff voie les logs :

| Champ                               | Valeur                         |
| ----------------------------------- | ------------------------------ |
| Discord Auth > **Required Role ID** | ID du rôle "Staff"             |
| Analytics > **requiredDiscordRole** | ID du rôle "Fondateur"         |
| Kanban > **requiredDiscordRole**    | *(vide = accessible au staff)* |

Résultat :

* **Fondateur** : voit les logs + analytics + kanban + tout le reste
* **Staff** : voit les logs + kanban, mais **pas** les analytics
* **Membre sans rôle** : aucun accès

### Hiérarchie d'accès

Quand un membre tente d'accéder à une extension avec un `requiredDiscordRole` configuré, QuantumLogs vérifie dans cet ordre :

1. **Propriétaire** (Owner Discord ID) → toujours autorisé
2. **Admin Role** → autorisé (bypass toutes les restrictions par extension)
3. **Rôle de l'extension** (`requiredDiscordRole`) → autorisé si le membre possède ce rôle
4. **Sinon** → accès refusé

## Ce que voit le staff vs le propriétaire

| Fonctionnalité          | Propriétaire | Staff          | Restreinte par rôle ?               |
| ----------------------- | ------------ | -------------- | ----------------------------------- |
| Logs                    | Oui          | Oui            | **Non** (toujours accessible)       |
| QuantumQL               | Oui          | Oui            | Non                                 |
| Journal                 | Oui          | Oui            | Non                                 |
| Analytics               | Oui          | Par défaut oui | **Oui** (via `requiredDiscordRole`) |
| Kanban                  | Oui          | Par défaut oui | **Oui** (via `requiredDiscordRole`) |
| Dashboard/Widgets       | Oui          | Par défaut oui | **Oui** (via `requiredDiscordRole`) |
| Pterodactyl             | Oui          | Par défaut oui | **Oui** (via `requiredDiscordRole`) |
| Loading Screen          | Oui          | Par défaut oui | **Oui** (via `requiredDiscordRole`) |
| **Extensions (config)** | **Oui**      | **Non**        | -                                   |
| **Administration**      | **Oui**      | **Non**        | -                                   |
| **Connector Health**    | **Oui**      | **Non**        | -                                   |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docsnew.quantumlogs.cloud/guide-proprietaire-owner/roles.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
