Vai al contenuto principale
Stai visualizzando la documentazione per sviluppatori
Questa documentazione è per sviluppatori che lavorano con la piattaforma per sviluppatori di Base44. Per informazioni sulla gestione dei dati della tua app usando l’editor, consulta Gestire i dati dell’app.
Le entità supportano due livelli di sicurezza:
  • Sicurezza a livello di riga (RLS): controlla a quali record gli utenti possono accedere.
  • Sicurezza a livello di campo (FLS): controlla a quali campi all’interno dei record gli utenti possono accedere.

Tipi di permesso

Ogni livello di sicurezza ha permessi diversi che puoi impostare. Per ogni permesso, definisci chi è autorizzato a eseguire l’azione.

Sicurezza a livello di riga (RLS)

  • create - aggiungere nuovi record
  • read - visualizzare i record
  • update - modificare i record
  • delete - rimuovere i record

Sicurezza a livello di campo (FLS)

  • read - visualizzare il campo
  • write - creare o modificare il campo

Valori dei permessi

Ogni permesso accetta uno dei seguenti valori:
  • true - consente a tutti gli utenti
  • false - blocca tutti gli utenti
  • {<condition>} - consente agli utenti che corrispondono alla condizione

Sintassi delle condizioni

Quando usi {<condition>} come valore di permesso, puoi definire regole che verificano attributi o ruoli dell’utente. 1. Confronto entità-utente Confronta i campi del record con i valori dell’utente corrente. Campi dell’entità che puoi referenziare:
  • created_by - email dell’utente che ha creato il record
  • created_by_id - ID dell’utente che ha creato il record
  • entity_name - nome del tipo di entità
  • app_id - ID dell’app
  • environment - prod oppure dev
  • is_sample - se si tratta di dati di esempio
  • is_deleted - flag di eliminazione soft
  • deleted_date - quando è stato eliminato
  • data.* - qualsiasi campo dalle proprietà del tuo schema entità
Variabili template per i valori utente:
  • {{user.email}} - email dell’utente
  • {{user.id}} - ID dell’utente
  • {{user.role}} - ruolo dell’utente
  • {{user.data.*}} - campi utente aggiuntivi che definisci
Esempio:
{"created_by": "{{user.email}}"}
{"data.department": "{{user.data.department}}"}
{"data.status": "approved"}
2. Verifica delle condizioni utente Verifica direttamente le proprietà dell’utente usando user_condition. Campi utente che puoi verificare:
  • email - email dell’utente
  • id - ID dell’utente
  • role - ruolo dell’utente
  • data.* - campi utente personalizzati
Esempio:
{"user_condition": {"role": "admin"}}
{"user_condition": {"data.level": "senior"}}
3. Condizioni complesse Combina più condizioni usando gli operatori. Operatori supportati: $or, $and, $nor, $in, $nin, $all Esempio:
{
  "$or": [
    {"created_by": "{{user.email}}"},
    {"user_condition": {"role": "admin"}}
  ]
}

Esempio di sicurezza a livello di riga (RLS)

Aggiungi rls a livello di entità:
{
  "name": "task",
  "type": "object",
  "properties": {...},
  "rls": {
    "create": true,
    "read": {"created_by": "{{user.email}}"},
    "update": {"created_by": "{{user.email}}"},
    "delete": {"user_condition": {"role": "admin"}}
  }
}

Esempio di sicurezza a livello di campo (FLS)

Aggiungi rls alle singole proprietà dei campi:
{
  "properties": {
    "salary": {
      "type": "number",
      "rls": {
        "read": {"user_condition": {"role": "admin"}},
        "write": {"user_condition": {"role": "admin"}}
      }
    }
  }
}

Esempio completo con sicurezza

Ecco uno schema di entità con sia RLS che FLS:
{
  "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}}"}
  }
}

Distribuire le regole di sicurezza

Le regole di sicurezza fanno parte del tuo schema di entità. Dopo aver aggiunto o aggiornato le regole di sicurezza, distribuisci usando entities push. Le regole di sicurezza vengono anche distribuite automaticamente quando esegui il comando deploy per distribuire l’intero progetto.

Vedi anche

Questa pagina è stata tradotta utilizzando l’IA. Per informazioni più accurate e aggiornate, consulta la versione inglese.