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

# Sécurité

> Contrôlez l'accès aux données de vos entités avec des règles de sécurité au niveau ligne et au niveau champ.

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Vous consultez la documentation pour développeurs
    </div>

    <div className="dev-docs-banner-text">
      Cette documentation est destinée aux développeurs travaillant avec la plateforme développeur Base44. Pour des informations sur la gestion des données de votre application via l'éditeur d'applications, consultez <a href="/Building-your-app/Managing-your-app-data">Gestion des données d'application</a>.
    </div>
  </div>
</div>

Les entités prennent en charge deux niveaux de sécurité :

* **Sécurité au niveau ligne (RLS)** : contrôle quels enregistrements les utilisateurs peuvent accéder.
* **Sécurité au niveau champ (FLS)** : contrôle quels champs dans les enregistrements les utilisateurs peuvent accéder.

## Types de permissions

Chaque niveau de sécurité a différentes permissions que vous pouvez définir. Pour chaque permission, vous définissez qui est autorisé à effectuer l'action.

### Sécurité au niveau ligne (RLS)

* `create` - Ajouter de nouveaux enregistrements
* `read` - Voir les enregistrements
* `update` - Modifier les enregistrements
* `delete` - Supprimer les enregistrements

### Sécurité au niveau champ (FLS)

* `read` - Voir le champ
* `write` - Créer ou modifier le champ

## Valeurs de permission

Chaque permission accepte l'une des valeurs suivantes :

* `true` - Autoriser tous les utilisateurs
* `false` - Bloquer tous les utilisateurs
* `{<condition>}` - Autoriser les utilisateurs correspondant à la condition

### Syntaxe de condition

Lorsque vous utilisez `{<condition>}` comme valeur de permission, vous pouvez définir des règles qui vérifient les attributs ou les rôles utilisateur.

**1. Comparaison entité-utilisateur**

Comparez les champs d'enregistrement aux valeurs de l'utilisateur actuel.

Champs d'entité que vous pouvez référencer :

* `created_by` - E-mail de l'utilisateur qui a créé l'enregistrement
* `created_by_id` - ID de l'utilisateur qui a créé l'enregistrement
* `entity_name` - Nom du type d'entité
* `app_id` - ID de l'application
* `environment` - Soit `prod` soit `dev`
* `is_sample` - Si c'est un échantillon de données
* `is_deleted` - Indicateur de suppression douce
* `deleted_date` - Quand il a été supprimé
* `data.*` - Tout champ des propriétés du schéma de votre entité

Variables de modèle pour les valeurs utilisateur :

* `{{user.email}}` - E-mail de l'utilisateur
* `{{user.id}}` - ID de l'utilisateur
* `{{user.role}}` - Rôle de l'utilisateur
* `{{user.data.*}}` - Champs utilisateur supplémentaires que vous définissez

Exemple :

```json theme={null}
{"created_by": "{{user.email}}"}
{"data.department": "{{user.data.department}}"}
{"data.status": "approved"}
```

**2. Vérification de condition utilisateur**

Vérifiez les propriétés utilisateur directement en utilisant `user_condition`.

Champs utilisateur que vous pouvez vérifier :

* `email` - E-mail de l'utilisateur
* `id` - ID de l'utilisateur
* `role` - Rôle de l'utilisateur
* `data.*` - Champs utilisateur personnalisés

Exemple :

```json theme={null}
{"user_condition": {"role": "admin"}}
{"user_condition": {"data.level": "senior"}}
```

**3. Conditions complexes**

Combinez plusieurs conditions en utilisant des opérateurs.

Opérateurs pris en charge : `$or`, `$and`, `$nor`, `$in`, `$nin`, `$all`

Exemple :

```json theme={null}
{
  "$or": [
    {"created_by": "{{user.email}}"},
    {"user_condition": {"role": "admin"}}
  ]
}
```

## Exemple de sécurité au niveau ligne (RLS)

Ajoutez `rls` au niveau de l'entité :

```json theme={null}
{
  "name": "task",
  "type": "object",
  "properties": {...},
  "rls": {
    "create": true,
    "read": {"created_by": "{{user.email}}"},
    "update": {"created_by": "{{user.email}}"},
    "delete": {"user_condition": {"role": "admin"}}
  }
}
```

## Exemple de sécurité au niveau champ (FLS)

Ajoutez `rls` aux propriétés de champs individuels :

```json theme={null}
{
  "properties": {
    "salary": {
      "type": "number",
      "rls": {
        "read": {"user_condition": {"role": "admin"}},
        "write": {"user_condition": {"role": "admin"}}
      }
    }
  }
}
```

## Exemple complet avec sécurité

Voici un schéma d'entité avec RLS et FLS :

```json theme={null}
{
  "name": "Task",
  "type": "object",
  "title": "Task",
  "description": "A task item with priority, due date, and completion status",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 1000
    },
    "priority": {
      "type": "string",
      "enum": ["low", "medium", "high"],
      "default": "medium"
    },
    "completed": {
      "type": "boolean",
      "default": false
    },
    "due_date": {
      "type": "string",
      "format": "date"
    },
    "tags": {
      "type": "array",
      "items": {"type": "string"}
    },
    "internal_notes": {
      "type": "string",
      "rls": {
        "read": {"user_condition": {"role": "admin"}},
        "write": {"user_condition": {"role": "admin"}}
      }
    }
  },
  "required": ["title"],
  "rls": {
    "create": true,
    "read": {"created_by": "{{user.email}}"},
    "update": {"created_by": "{{user.email}}"},
    "delete": {"created_by": "{{user.email}}"}
  }
}
```

## Déploiement des règles de sécurité

Les règles de sécurité font partie de votre schéma d'entité. Après avoir ajouté ou mis à jour des règles de sécurité, déployez en utilisant [`entities push`](/developers/references/cli/commands/entities-push). Les règles de sécurité sont également déployées automatiquement lorsque vous exécutez la commande [`deploy`](/developers/references/cli/commands/deploy) pour déployer l'ensemble de votre projet.

## Voir aussi

* [Présentation des entités](/developers/backend/resources/entities/overview) : apprenez la configuration du schéma de base de données
* [Schémas d'entités](/developers/backend/resources/entities/entity-schemas) : définissez la structure de votre entité
* [Schéma utilisateur](/developers/backend/resources/entities/user-schema) : entité intégrée spéciale pour l'authentification utilisateur
* [Structure du projet](/developers/backend/overview/project-structure) : comment les schémas d'entités s'intègrent dans votre projet

<Note>Cette page a été traduite à l'aide de l'IA. Pour les informations les plus précises et à jour, consultez la [version anglaise](/). </Note>
