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

# Matrice des Permissions

> Référence complète de toutes les permissions et correspondances de rôles

## Vue d'ensemble

Cette matrice montre toutes les permissions dans Agatabo, les actions qu'elles contrôlent et les rôles qui les possèdent généralement.

## Format des permissions

**Format** : `resource:action`

**Exemple** : `savings:write` = permission d'écrire (créer/modifier) des enregistrements d'Épargne

**Portées** :

* **SELF** : accès uniquement à ses propres données
* **ANY** : accès à toutes les données de l'organisation

***

## Liste complète des permissions

### Utilisateurs d'organisation

| Permission                      | Portée | Description            | Actions autorisées                                                        |
| ------------------------------- | ------ | ---------------------- | ------------------------------------------------------------------------- |
| `organization_users:read`       | SELF   | Voir son propre profil | Voir son nom, e-mail, téléphone, date d'adhésion, rôles                   |
| `organization_users:read`       | ANY    | Voir tous les membres  | Voir la liste des membres, profils, coordonnées, dates d'adhésion         |
| `organization_users:write`      | ANY    | Gérer les membres      | Inviter, modifier, désactiver les membres ; mettre à jour les coordonnées |
| `organization_user_roles:write` | ANY    | Assigner des rôles     | Accorder/révoquer rôles et permissions aux utilisateurs                   |

### Épargne et Dépôts

| Permission      | Portée | Description                 | Actions autorisées                                                                   |
| --------------- | ------ | --------------------------- | ------------------------------------------------------------------------------------ |
| `savings:read`  | SELF   | Voir sa propre Épargne      | Voir son historique de Dépôts et son solde courant                                   |
| `savings:read`  | ANY    | Voir toute l'Épargne        | Voir les Dépôts, soldes et historiques de transaction de tous les membres            |
| `savings:write` | ANY    | Enregistrer Dépôts/retraits | Créer des Dépôts, traiter des retraits, modifier les transactions non comptabilisées |

### Prêts

| Permission    | Portée | Description                       | Actions autorisées                                                               |
| ------------- | ------ | --------------------------------- | -------------------------------------------------------------------------------- |
| `loans:read`  | SELF   | Voir ses propres prêts            | Voir ses détails de prêt, échéanciers et historique de paiement                  |
| `loans:read`  | ANY    | Voir tous les prêts               | Voir les prêts de tous les membres, rapports de portefeuille, statut des retards |
| `loans:write` | SELF   | Demander des prêts                | Soumettre des demandes de prêt pour soi-même (si libre-service activé)           |
| `loans:write` | ANY    | Gérer tous les prêts              | Créer, approuver, modifier, décaisser des prêts pour tout Membre                 |
| `loans:write` | ANY    | Enregistrer les paiements de prêt | Comptabiliser des paiements sur les prêts, allouer au Capital/Intérêt            |
| `loans:write` | ANY    | Appliquer des Pénalités           | Ajouter des frais de retard et Pénalités aux prêts en retard                     |

### Dépenses

| Permission       | Portée | Description               | Actions autorisées                                                   |
| ---------------- | ------ | ------------------------- | -------------------------------------------------------------------- |
| `expenses:read`  | SELF   | Voir ses propres Dépenses | Voir les demandes de Dépense soumises par soi-même (si applicable)   |
| `expenses:read`  | ANY    | Voir toutes les Dépenses  | Voir toutes les Dépenses de l'organisation, catégories, historique   |
| `expenses:write` | ANY    | Enregistrer des Dépenses  | Créer des enregistrements de Dépense, catégoriser, joindre des reçus |

### Immobilisations

| Permission     | Portée | Description                     | Actions autorisées                                                     |
| -------------- | ------ | ------------------------------- | ---------------------------------------------------------------------- |
| `assets:read`  | SELF   | Voir ses propres actifs         | Voir les actifs associés à soi-même (cas rare)                         |
| `assets:read`  | ANY    | Voir toutes les Immobilisations | Voir le registre des actifs, détails d'acquisition, valeurs            |
| `assets:write` | ANY    | Gérer les Immobilisations       | Ajouter des actifs, mettre à jour les valeurs, enregistrer les sorties |

### Réserves

| Permission       | Portée | Description                 | Actions autorisées                                         |
| ---------------- | ------ | --------------------------- | ---------------------------------------------------------- |
| `reserves:read`  | SELF   | Voir ses données de Réserve | Usage limité (les Réserves sont au niveau organisation)    |
| `reserves:read`  | ANY    | Voir les Réserves           | Voir les soldes de Réserve et l'historique d'allocation    |
| `reserves:write` | ANY    | Gérer les Réserves          | Créer des Réserves, allouer (recharger), libérer des fonds |

### Dividendes

| Permission        | Portée | Description                 | Actions autorisées                                                                 |
| ----------------- | ------ | --------------------------- | ---------------------------------------------------------------------------------- |
| `dividends:read`  | SELF   | Voir ses propres Dividendes | Voir les montants de Dividende reçus et l'historique de distribution               |
| `dividends:read`  | ANY    | Voir tous les Dividendes    | Voir les pools de Dividendes, allocations membres, historique de distribution      |
| `dividends:write` | ANY    | Gérer les Dividendes        | Créer des pools de Dividendes, calculer les distributions, marquer comme distribué |

### Grand Livre et comptabilité

| Permission     | Portée | Description                            | Actions autorisées                                                            |
| -------------- | ------ | -------------------------------------- | ----------------------------------------------------------------------------- |
| `ledger:read`  | SELF   | Voir son propre compte du Grand Livre  | Voir son relevé de compte d'Épargne (vue Membre)                              |
| `ledger:read`  | ANY    | Voir tous les comptes du Grand Livre   | Accéder au plan comptable, soldes de compte, relevés, balance de vérification |
| `ledger:write` | ANY    | Comptabiliser des Écritures Comptables | Créer des écritures manuelles, comptabiliser des ajustements et corrections   |

### Rapports

**Note** : les rapports n'ont généralement pas de permissions spécifiques. L'accès dépend des permissions sur les données sous-jacentes.

**Exemples** :

* Bilan : exige `ledger:read` (ANY)
* Prêts en Cours : exige `loans:read` (ANY)
* Relevé d'Épargne du Membre : exige `savings:read` (SELF ou ANY)

### Paramètres et administration

| Permission        | Portée | Description                               | Actions autorisées                                               |
| ----------------- | ------ | ----------------------------------------- | ---------------------------------------------------------------- |
| `settings:read`   | ANY    | Voir les paramètres de l'organisation     | Voir nom de l'organisation, devise, fuseau horaire, paramètres   |
| `settings:write`  | ANY    | Modifier les paramètres de l'organisation | Mettre à jour nom, préférences de notification, configurations   |
| `settings:write`  | ANY    | Mettre à jour taux et configs             | Modifier taux d'Intérêt, calendriers de contribution, politiques |
| `audit_logs:read` | ANY    | Voir la piste d'audit                     | Accéder au journal complet d'activité, filtrer par acteur/action |

***

## Correspondances de rôles courantes

<Warning>
  **Note sur les rôles** : les correspondances ci-dessous sont des configurations suggérées, pas des rôles système prédéfinis. Agatabo fournit `admin` et `member` comme rôles par défaut protégés. Les organisations créent des rôles personnalisés supplémentaires et assignent les permissions selon leur structure opérationnelle.
</Warning>

### Administrateur (accès complet)

| Permission                      | Portée |
| ------------------------------- | ------ |
| `organization_users:read`       | ANY    |
| `organization_users:write`      | ANY    |
| `organization_user_roles:write` | ANY    |
| `savings:read`                  | ANY    |
| `savings:write`                 | ANY    |
| `loans:read`                    | ANY    |
| `loans:write`                   | ANY    |
| `loans:write`                   | ANY    |
| `loans:write`                   | ANY    |
| `expenses:read`                 | ANY    |
| `expenses:write`                | ANY    |
| `assets:read`                   | ANY    |
| `assets:write`                  | ANY    |
| `reserves:read`                 | ANY    |
| `reserves:write`                | ANY    |
| `dividends:read`                | ANY    |
| `dividends:write`               | ANY    |
| `ledger:read`                   | ANY    |
| `ledger:write`                  | ANY    |
| `settings:read`                 | ANY    |
| `settings:write`                | ANY    |
| `settings:write`                | ANY    |
| `audit_logs:read`               | ANY    |

**Peut faire** : tout

***

### Trésorier

| Permission                | Portée |
| ------------------------- | ------ |
| `organization_users:read` | ANY    |
| `savings:read`            | ANY    |
| `savings:write`           | ANY    |
| `expenses:read`           | ANY    |
| `expenses:write`          | ANY    |
| `ledger:read`             | ANY    |

**Peut faire** : enregistrer les Dépôts, enregistrer les Dépenses, voir les rapports financiers

**Ne peut pas faire** : créer des prêts, assigner des rôles, modifier les paramètres

***

### Agent de crédit

| Permission                | Portée                            |
| ------------------------- | --------------------------------- |
| `organization_users:read` | ANY                               |
| `savings:read`            | ANY (pour vérifier l'éligibilité) |
| `loans:read`              | ANY                               |
| `loans:write`             | ANY                               |
| `loans:write`             | ANY                               |
| `loans:write`             | ANY                               |

**Peut faire** : créer/gérer les prêts, enregistrer les paiements, appliquer des Pénalités

**Ne peut pas faire** : enregistrer Dépôts/Dépenses, comptabiliser des Écritures Comptables, assigner des rôles

***

### Comptable

| Permission                | Portée                 |
| ------------------------- | ---------------------- |
| `organization_users:read` | ANY                    |
| `savings:read`            | ANY                    |
| `loans:read`              | ANY                    |
| `expenses:read`           | ANY                    |
| `assets:read`             | ANY                    |
| `reserves:read`           | ANY                    |
| `dividends:read`          | ANY                    |
| `ledger:read`             | ANY                    |
| `ledger:write`            | ANY (pour ajustements) |
| `audit_logs:read`         | ANY                    |

**Peut faire** : voir toutes les données financières, exécuter les rapports, comptabiliser des écritures d'ajustement, voir la piste d'audit

**Ne peut pas faire** : enregistrer des transactions opérationnelles (Dépôts, prêts), assigner des rôles, modifier les paramètres

***

### Membre (basique)

| Permission                | Portée |
| ------------------------- | ------ |
| `organization_users:read` | SELF   |
| `savings:read`            | SELF   |
| `loans:read`              | SELF   |
| `ledger:read`             | SELF   |
| `dividends:read`          | SELF   |

**Peut faire** : voir sa propre Épargne, ses prêts, son relevé de compte, ses Dividendes

**Ne peut pas faire** : voir les données d'autres membres, enregistrer des transactions, accéder aux paramètres

***

## Héritage des permissions

**Plusieurs rôles** :

* Si un utilisateur a plusieurs rôles, les permissions sont **cumulatives** (union)
* Exemple : un utilisateur avec Trésorier + Agent de crédit peut enregistrer des Dépôts ET créer des prêts

**Priorité de portée** :

* Si la même permission est accordée avec différentes portées, la portée **ANY gagne**
* Exemple : l'utilisateur a `savings:read` SELF depuis le rôle Membre + `savings:read` ANY depuis le rôle Trésorier = l'utilisateur obtient la portée ANY

***

## Cas spéciaux

### Demandes de prêt en libre-service

* Un Membre avec `loans:write` (portée SELF) peut soumettre des demandes de prêt
* Exige que l'administrateur configure la fonctionnalité libre-service
* Les demandes nécessitent toujours l'approbation du comité de prêt

### Écritures Comptables restreintes

* La permission `ledger:write` permet de créer des Écritures Comptables manuelles
* Certains types d'écriture peuvent être restreints (par ex. écritures de clôture) même avec la permission
* Le système empêche la création d'écritures dans des Périodes clôturées, quelle que soit la permission

### Paramètres au niveau de l'organisation

* `settings:write` est puissant - accorde la capacité de modifier la devise, le fuseau horaire, etc.
* Doit être donné uniquement à des administrateurs de confiance
* Les changements affectent toute l'organisation et tous les utilisateurs

***

## Contrôles de permission dans Agatabo

**Où les permissions sont vérifiées** :

1. **UI** : boutons/menus masqués si permission insuffisante
2. **API** : le serveur valide la permission avant d'exécuter l'action
3. **Rapports** : filtrés selon la portée (SELF vs ANY)

**Messages d'erreur** :

* "You don't have permission to perform this action" = permission entièrement manquante
* "You can only access your own data" = permission présente avec portée SELF, tentative d'accès aux données d'autres utilisateurs

***

## Besoin d'aide ?

<CardGroup cols={2}>
  <Card title="Comprendre les Permissions" icon="shield" href="/fr/tontines/settings/permissions">
    Guide détaillé des permissions
  </Card>

  <Card title="Rôles des Membres" icon="users" href="/fr/tontines/organization-users/roles">
    Gestion des rôles
  </Card>
</CardGroup>
