# User Identity

O `UserIdentity` módulo permite [cenas](https://github.com/decentraland/docs/blob/main/contributor/content/entity-types/scenes/README.md) acessarem o [perfil](https://github.com/decentraland/docs/blob/main/contributor/content/entity-types/profiles/README.md) do usuário do jogador.

```ts
const UserIdentity = require("~system/UserIdentity");
```

Contém os seguintes métodos e tipos:

* [`função getUserData`](#getUserData)
* [`interface UserData`](#UserData)

### Métodos

Os dois métodos neste módulo obtêm pedaços de informação do usuário do jogador.

**`getUserData`**

Retorna o [`UserData`](#UserData) do usuário do jogador.

```ts
interface Request {}

interface Response {
  // As informações de perfil do usuário, se disponíveis.
  data?: UserData;
}

function getUserData(Request): Promise<Response>;
```

### Tipos

Há apenas um tipo neste módulo: `UserData`.

**`UserData`**

Contém informação (possivelmente parcial) sobre um usuário, sua identidade e avatar.

World Explorers podem obter isso através do [content system](https://github.com/decentraland/docs/blob/main/contributor/content/overview/README.md).

O [definição de entidade de perfil](https://github.com/decentraland/docs/blob/main/contributor/content/entity-types/profiles/README.md) detalha todos esses campos e mais. Embora a estrutura e as chaves de `UserData` sejam ligeiramente diferentes, o significado de cada campo é o mesmo.

```ts
export interface UserData {
  // O endereço Ethereum do usuário.
  userId: string;

  // Um nome para chamá-los na UI.
  displayName: string;

  // A chave pública Ethereum com a qual eles assinam.
  publicKey?: string;

  // Se eles têm funcionalidade web3 habilitada.
  hasConnectedWeb3: boolean;

  // A versão sequencial desta informação, incrementada a cada atualização do usuário.
  version: number;

  // Informação sobre o avatar deles, se disponível.
  avatar?: {
    // Ponteiros para os assets necessários para renderizar este avatar.
    bodyShape: string;
    wearables: string[];

    // Cores RGB/RGBA codificadas em hex para diferentes partes do corpo (#aabbcc ou #aabbccdd).
    skinColor: string;
    hairColor: string;
    eyeColor: string;

    // Identificadores de arquivo para as "fotos" deste avatar.
    snapshots?: {
      face256: string;
      body: string;
    };
  };
}
```
