Pular para o conteúdo principal
Você está vendo a documentação para desenvolvedores
Esta documentação é para desenvolvedores que trabalham com a plataforma para desenvolvedores Base44. Para informações sobre como gerenciar os dados do seu app usando o editor de apps, veja Gerenciar dados do app.
As entidades suportam dois níveis de segurança:
  • Segurança em Nível de Linha (RLS): Controla quais registros os usuários podem acessar.
  • Segurança em Nível de Campo (FLS): Controla quais campos dentro dos registros os usuários podem acessar.

Tipos de permissão

Cada nível de segurança tem diferentes permissões que você pode definir. Para cada permissão, você define quem está autorizado a realizar a ação.

Segurança em Nível de Linha (RLS)

  • create - Adicionar novos registros
  • read - Visualizar registros
  • update - Modificar registros
  • delete - Remover registros

Segurança em Nível de Campo (FLS)

  • read - Visualizar o campo
  • write - Criar ou modificar o campo

Valores de permissão

Cada permissão aceita um dos seguintes valores:
  • true - Permite todos os usuários
  • false - Bloqueia todos os usuários
  • {<condition>} - Permite usuários que correspondem à condição

Sintaxe de condição

Ao usar {<condition>} como valor de permissão, você pode definir regras que verificam atributos ou funções do usuário. 1. Comparação entidade-usuário Compare campos do registro com os valores do usuário atual. Campos de entidade que você pode referenciar:
  • created_by - E-mail do usuário que criou o registro
  • created_by_id - ID do usuário que criou o registro
  • entity_name - Nome do tipo de entidade
  • app_id - ID do app
  • environment - Ou prod ou dev
  • is_sample - Se é dado de amostra
  • is_deleted - Flag de soft delete
  • deleted_date - Quando foi excluído
  • data.* - Qualquer campo das propriedades do schema da sua entidade
Variáveis de template para valores do usuário:
  • {{user.email}} - E-mail do usuário
  • {{user.id}} - ID do usuário
  • {{user.role}} - Função do usuário
  • {{user.data.*}} - Campos adicionais de usuário que você define
Exemplo:
{"created_by": "{{user.email}}"}
{"data.department": "{{user.data.department}}"}
{"data.status": "approved"}
2. Verificação de condição de usuário Verifique propriedades do usuário diretamente usando user_condition. Campos de usuário que você pode verificar:
  • email - E-mail do usuário
  • id - ID do usuário
  • role - Função do usuário
  • data.* - Campos customizados de usuário
Exemplo:
{"user_condition": {"role": "admin"}}
{"user_condition": {"data.level": "senior"}}
3. Condições complexas Combine múltiplas condições usando operadores. Operadores suportados: $or, $and, $nor, $in, $nin, $all Exemplo:
{
  "$or": [
    {"created_by": "{{user.email}}"},
    {"user_condition": {"role": "admin"}}
  ]
}

Exemplo de Segurança em Nível de Linha (RLS)

Adicione rls no nível da entidade:
{
  "name": "task",
  "type": "object",
  "properties": {...},
  "rls": {
    "create": true,
    "read": {"created_by": "{{user.email}}"},
    "update": {"created_by": "{{user.email}}"},
    "delete": {"user_condition": {"role": "admin"}}
  }
}

Exemplo de Segurança em Nível de Campo (FLS)

Adicione rls às propriedades de campo individuais:
{
  "properties": {
    "salary": {
      "type": "number",
      "rls": {
        "read": {"user_condition": {"role": "admin"}},
        "write": {"user_condition": {"role": "admin"}}
      }
    }
  }
}

Exemplo completo com segurança

Aqui está um schema de entidade com RLS e 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}}"}
  }
}

Implantando regras de segurança

As regras de segurança fazem parte do seu schema de entidade. Após adicionar ou atualizar regras de segurança, implante usando entities push. As regras de segurança também são implantadas automaticamente quando você executa o comando deploy para implantar todo o seu projeto.

Veja também

Esta página foi traduzida usando IA. Para informações mais precisas e atualizadas, consulte a versão em inglês.