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

# User Schema

> Estenda a entidade User integrada com campos adicionais para seu app.

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Você está vendo a documentação para desenvolvedores
    </div>

    <div className="dev-docs-banner-text">
      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 <a href="/Building-your-app/Managing-your-app-data">Gerenciar dados do app</a>.
    </div>
  </div>
</div>

A entidade User existe em todo projeto Base44 por padrão e armazena informações sobre os usuários do seu app. Você pode adicionar campos para armazenar dados adicionais de usuário, depois usar esses campos em [regras de segurança](/developers/backend/resources/entities/security) para controlar o acesso a dados ou no seu app para personalizar a experiência.

## Campos integrados

Cada entidade User inclui um conjunto de campos integrados por padrão.

| Campo       | Tipo   | Descrição                     |
| ----------- | ------ | ----------------------------- |
| `full_name` | string | Nome de exibição do usuário   |
| `email`     | string | Endereço de e-mail do usuário |
| `role`      | string | Ou `admin` ou `user`          |

A entidade User também tem os [campos integrados gerais](/developers/backend/resources/entities/entity-schemas#built-in-fields) que existem em todas as entidades, como `id` e `created_date`.

Esses campos são gerenciados pelo sistema e não podem ser redefinidos no seu schema.

## Campos customizados

Para adicionar campos customizados, defina um User schema contendo apenas seus campos adicionais. Tentar redefinir qualquer campo integrado causará um erro de validação.

Crie um arquivo `User.json` ou `User.jsonc` no diretório de entidades do seu projeto. Por padrão este é `base44/entities/`, mas você pode personalizar o caminho na [configuração do seu projeto](/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"]
}
```

Depois envie suas entidades para a Base44 usando [`entities push`](/developers/references/cli/commands/entities-push) ou [`deploy`](/developers/references/cli/commands/deploy).

## Exemplo completo

Aqui está um User schema completo com vários 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"]
}
```

## Use seus campos

Depois que você definir e enviar seu User schema, pode referenciar seus campos em regras de segurança e acessá-los no código do seu app.

### Em regras de segurança

Você pode usar campos de usuário para controlar o acesso a outras entidades. Por exemplo, você pode restringir os usuários para que só vejam registros que pertencem à sua empresa.

Para referenciar campos de usuário em [regras de segurança](/developers/backend/resources/entities/security), use a sintaxe de template `{{user.data.*}}`:

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

Esta regra garante que os usuários só possam ler e atualizar registros onde o campo `company` do registro corresponde ao do próprio usuário.

### No código

Acesse campos de usuário através do [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 exemplo usa um cliente `base44`. Veja [Configurando o cliente](/developers/references/sdk/getting-started/client) para instruções de configuração.
</Info>

## Veja também

* [Visão geral de Entidades](/developers/backend/resources/entities/overview): Saiba sobre configuração de schema do banco de dados
* [Schemas de Entidade](/developers/backend/resources/entities/entity-schemas): Defina a estrutura da sua entidade
* [Segurança](/developers/backend/resources/entities/security): Configure regras de segurança em nível de linha
* [Estrutura do projeto](/developers/backend/overview/project-structure): Como schemas de entidade se encaixam no seu projeto

<Note>Esta página foi traduzida usando IA. Para informações mais precisas e atualizadas, consulte a [versão em inglês](/). </Note>
