Saltar al contenido principal
Estás viendo la documentación para desarrolladores
Esta documentación es para desarrolladores que trabajan con la plataforma para desarrolladores de Base44. Para información sobre la gestión de los datos de tu app desde el editor de apps, consulta Gestionar los datos de la app.
Las entidades admiten dos niveles de seguridad:
  • Row Level Security (RLS): Controla a qué registros pueden acceder los usuarios.
  • Field Level Security (FLS): Controla a qué campos dentro de los registros pueden acceder los usuarios.

Tipos de permiso

Cada nivel de seguridad tiene distintos permisos que puedes establecer. Para cada permiso, defines a quién se le permite realizar la acción.

Row Level Security (RLS)

  • create - Añade nuevos registros
  • read - Visualiza registros
  • update - Modifica registros
  • delete - Elimina registros

Field Level Security (FLS)

  • read - Visualiza el campo
  • write - Crea o modifica el campo

Valores de permiso

Cada permiso acepta uno de los siguientes valores:
  • true - Permite a todos los usuarios
  • false - Bloquea a todos los usuarios
  • {<condition>} - Permite a los usuarios que cumplan la condición

Sintaxis de la condición

Al usar {<condition>} como valor de permiso, puedes definir reglas que comprueben los atributos o roles del usuario. 1. Comparación entidad-usuario Compara campos del registro con los valores del usuario actual. Campos de entidad que puedes referenciar:
  • created_by - Email del usuario que creó el registro
  • created_by_id - ID del usuario que creó el registro
  • entity_name - Nombre del tipo de entidad
  • app_id - App ID
  • environment - prod o dev
  • is_sample - Si son datos de muestra
  • is_deleted - Flag de eliminación lógica
  • deleted_date - Cuándo se eliminó
  • data.* - Cualquier campo de las propiedades de tu esquema de entidad
Variables de plantilla para los valores del usuario:
  • {{user.email}} - Email del usuario
  • {{user.id}} - ID del usuario
  • {{user.role}} - Rol del usuario
  • {{user.data.*}} - Campos de usuario adicionales que definas
Ejemplo:
{"created_by": "{{user.email}}"}
{"data.department": "{{user.data.department}}"}
{"data.status": "approved"}
2. Comprobación de condición de usuario Comprueba las propiedades del usuario directamente usando user_condition. Campos de usuario que puedes comprobar:
  • email - Email del usuario
  • id - ID del usuario
  • role - Rol del usuario
  • data.* - Campos de usuario personalizados
Ejemplo:
{"user_condition": {"role": "admin"}}
{"user_condition": {"data.level": "senior"}}
3. Condiciones complejas Combina varias condiciones usando operadores. Operadores compatibles: $or, $and, $nor, $in, $nin, $all Ejemplo:
{
  "$or": [
    {"created_by": "{{user.email}}"},
    {"user_condition": {"role": "admin"}}
  ]
}

Ejemplo de Row Level Security (RLS)

Añade rls a nivel de entidad:
{
  "name": "task",
  "type": "object",
  "properties": {...},
  "rls": {
    "create": true,
    "read": {"created_by": "{{user.email}}"},
    "update": {"created_by": "{{user.email}}"},
    "delete": {"user_condition": {"role": "admin"}}
  }
}

Ejemplo de Field Level Security (FLS)

Añade rls a las propiedades de campos individuales:
{
  "properties": {
    "salary": {
      "type": "number",
      "rls": {
        "read": {"user_condition": {"role": "admin"}},
        "write": {"user_condition": {"role": "admin"}}
      }
    }
  }
}

Ejemplo completo con seguridad

Aquí tienes un esquema de entidad con RLS y 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}}"}
  }
}

Desplegar reglas de seguridad

Las reglas de seguridad forman parte de tu esquema de entidad. Después de añadir o actualizar las reglas de seguridad, despliega usando entities push. Las reglas de seguridad también se despliegan automáticamente cuando ejecutas el comando deploy para desplegar todo tu proyecto.

Ver también

Esta página se tradujo con IA. Para información más precisa y actualizada, consulta la versión en inglés.