6. Níveis de Acesso e Autenticação

A autenticação na API é realizada via JSON Web Tokens (JWT), enviados no cabeçalho Authorization como Bearer Token.

Existem os seguintes níveis de acesso:


6.1. Criação de Usuários

Usuário Administrador Padrão (Admin)

Para facilitar o primeiro acesso e a configuração inicial, um usuário administrador padrão é automaticamente criado no banco de dados quando as migrações do projeto são executadas. Esta criação é realizada por um script de "seed" dentro de uma das migrações (por exemplo, um arquivo como CreateDefaultAdminUserSeed.ts).

Este usuário padrão possui as seguintes credenciais iniciais:

Com este usuário, você pode acessar imediatamente todas as funcionalidades administrativas da API após a configuração inicial e execução das migrações do banco de dados.

O processo de criação na migração utiliza um comando SQL similar a este:

-- SQL executado pela migração para criar o admin padrão:
INSERT INTO "user" (
  id, name, profile_pick, role, email, "password"
) VALUES (
  '9dfce170-5094-436f-9413-f5afc769a75e',
  'Admin User',
  'https://l1nq.com/icone-de-perfil-de-avatar-padrao',
  'admin',
  'admin@example.com',
  '$2b$10$yG9D2ihkLL6hTh5KCw/l5.BqAqJ3i49GIvksxCBStGSMEJtTHS2ey' -- Senha hasheada para: admin123
);

Importante: Por questões de segurança, é altamente recomendável que você altere a senha deste usuário padrão assim que possível após o primeiro login, especialmente se estiver configurando um ambiente de homologação ou produção.

Como Alterar a Senha do Administrador Padrão (via SQL)

Se você precisar alterar a senha do usuário administrador padrão diretamente no banco de dados (por exemplo, se esqueceu a senha ou para maior segurança), você precisará gerar um novo hash bcrypt para a nova senha e então atualizar o campo password na tabela user.

Passo 1: Gerar o Hash da Nova Senha

Você pode usar uma ferramenta online de geração de hash bcrypt com Rounds de 10, ou um script simples em Node.js com a biblioteca bcrypt para gerar o hash da sua nova senha. Por exemplo, para a senha "novaSenhaAdminSuperSegura":

// Exemplo de script Node.js para gerar hash (não execute na documentação, apenas para ilustração)
// const bcrypt = require('bcrypt');
// const saltRounds = 10;
// const minhaNovaSenha = 'novaSenhaAdminSuperSegura';
// bcrypt.hash(minhaNovaSenha, saltRounds, function(err, hash) {
//     console.log('Seu novo hash bcrypt é: ', hash);
// });
// Resultado exemplo: $2b$10$ExemploDeNovoHashGeradoPeloBcryptAqui123

Passo 2: Atualizar a Senha no Banco de Dados

Com o novo hash gerado (vamos supor que seja $2b$10$SeuNovoHashSuperSeguroAquiXxYyZz), execute o seguinte comando SQL no seu banco de dados PostgreSQL para atualizar a senha do admin padrão (ID: 9dfce170-5094-436f-9413-f5afc769a75e):

UPDATE "user"
SET "password" = '$2b$10$SeuNovoHashSuperSeguroAquiXxYyZz' -- Substitua pelo seu novo hash gerado
WHERE id = '9dfce170-5094-436f-9413-f5afc769a75e';

Você também pode usar este método para atualizar outros campos como name ou profile_pick se necessário, mas para alterações de senha, o hashing é crucial.

Lembre-se: Nunca armazene senhas em texto plano no banco de dados. Sempre use hashes seguros como Bcrypt.

Visitor / Organizer

Visitantes e Organizadores podem se registrar de forma independente através do endpoint público da API:

POST /user/register
Content-Type: application/json

{
  "name": "Nome do Usuário",
  "userLogin": { 
    "email": "usuario@example.com", 
    "password": "senhaSegura123" 
  },
  "profilePick": "https://example.com/foto.jpg",
  "role": "visitor"  // ou "organizer"
}

Este endpoint permite que novos usuários criem suas contas e comecem a interagir com a plataforma de acordo com o papel (role) especificado.