> ## 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.

# Esquema de usuario

> Amplía la entidad User integrada con campos adicionales para tu app.

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Estás viendo la documentación para desarrolladores
    </div>

    <div className="dev-docs-banner-text">
      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 <a href="/Building-your-app/Managing-your-app-data">Gestionar los datos de la app</a>.
    </div>
  </div>
</div>

La entidad User existe en cada proyecto de Base44 por defecto y almacena información sobre los usuarios de tu app. Puedes añadir campos para almacenar datos de usuario adicionales y luego usar esos campos en las [reglas de seguridad](/developers/backend/resources/entities/security) para controlar el acceso a los datos o en tu app para personalizar la experiencia.

## Campos integrados

Cada entidad User incluye un conjunto de campos integrados por defecto.

| Campo       | Tipo   | Descripción                     |
| ----------- | ------ | ------------------------------- |
| `full_name` | string | Nombre para mostrar del usuario |
| `email`     | string | Dirección de email del usuario  |
| `role`      | string | `admin` o `user`                |

La entidad User también tiene los [campos integrados generales](/developers/backend/resources/entities/entity-schemas#built-in-fields) que existen en todas las entidades, como `id` y `created_date`.

Estos campos los gestiona el sistema y no se pueden redefinir en tu esquema.

## Campos personalizados

Para añadir campos personalizados, define un esquema de User que contenga solo tus campos adicionales. Intentar redefinir cualquier campo integrado provocará un error de validación.

Crea un archivo `User.json` o `User.jsonc` en el directorio de entidades de tu proyecto. Por defecto es `base44/entities/`, pero puedes personalizar la ruta en tu [configuración del proyecto](/developers/backend/overview/project-structure#configjsonc).

```json entities/User.json theme={null}
{
  "type": "object",
  "properties": {
    "company": { "type": "string" },
    "phone": { "type": "string" },
    "job_title": { "type": "string" },
    "bio": { 
      "type": "string",
      "maxLength": 500
    }
  },
  "required": ["company"]
}
```

Luego envía tus entidades a Base44 usando [`entities push`](/developers/references/cli/commands/entities-push) o [`deploy`](/developers/references/cli/commands/deploy).

## Ejemplo completo

Aquí tienes un esquema de User completo con varios tipos de campo:

```json theme={null}
{
  "type": "object",
  "properties": {
    "company": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "job_title": {
      "type": "string",
      "maxLength": 100
    },
    "bio": {
      "type": "string",
      "maxLength": 500
    },
    "website": {
      "type": "string",
      "format": "uri"
    },
    "preferences": {
      "type": "object",
      "properties": {
        "theme": {
          "type": "string",
          "enum": ["light", "dark"],
          "default": "light"
        },
        "notifications": {
          "type": "boolean",
          "default": true
        }
      }
    }
  },
  "required": ["company"]
}
```

## Usa tus campos

Una vez que hayas definido y enviado tu esquema de User, puedes referenciar tus campos en las reglas de seguridad y acceder a ellos en el código de tu app.

### En reglas de seguridad

Puedes usar los campos de usuario para controlar el acceso a otras entidades. Por ejemplo, podrías restringir a los usuarios para que solo vean los registros que pertenecen a su empresa.

Para referenciar los campos de usuario en las [reglas de seguridad](/developers/backend/resources/entities/security), usa la sintaxis de plantilla `{{user.data.*}}`:

```json theme={null}
{
  "rls": {
    "read": {"data.company": "{{user.data.company}}"},
    "update": {"data.company": "{{user.data.company}}"}
  }
}
```

Esta regla asegura que los usuarios solo puedan leer y actualizar los registros donde el campo `company` del registro coincida con el suyo.

### En código

Accede a los campos de usuario a través del [SDK](/developers/references/sdk/getting-started/overview):

```typescript theme={null}
// Get current user's fields
const currentUser = await base44.auth.me();
console.log(currentUser.company); // "Acme Inc"

// Update current user's fields
await base44.auth.updateMe({
  phone: "+1-555-0123",
  job_title: "Senior Developer"
});

// List all users with service role (backend functions only)
const allUsers = await base44.asServiceRole.entities.User.list();
```

<Info>
  Este ejemplo usa un cliente `base44`. Consulta [Configurar el cliente](/developers/references/sdk/getting-started/client) para instrucciones de configuración.
</Info>

## Ver también

* [Resumen de entidades](/developers/backend/resources/entities/overview): Aprende sobre la configuración de esquemas de base de datos
* [Esquemas de entidad](/developers/backend/resources/entities/entity-schemas): Define la estructura de tus entidades
* [Seguridad](/developers/backend/resources/entities/security): Configura reglas de seguridad a nivel de fila
* [Estructura del proyecto](/developers/backend/overview/project-structure): Cómo encajan los esquemas de entidad en tu proyecto

<Note>Esta página se tradujo con IA. Para información más precisa y actualizada, consulta la [versión en inglés](/). </Note>
