# Documentação dos Endpoints de Autenticação e Usuários
---
## 1. Login
- **Endpoint:** `POST /auth/login`
- **Descrição:** Realiza autenticação do usuário. Retorna um token JWT para ser usado
nas requisições autenticadas.
### Body JSON esperado:
```json
{
"email": "usuario@[Link]",
"senha": "senha123"
}
Resposta de sucesso:
{
"token": "JWT_TOKEN_AQUI"
}
Lógica:
Recebe email e senha.
Autentica usando o serviço do Spring Security.
Retorna um token JWT (válido por 2 horas) se as credenciais estiverem corretas.
O token deve ser enviado no header:
Authorization: Bearer JWT_TOKEN_AQUI
2. Cadastro
Endpoint: POST /auth/register
Descrição: Cria um novo usuário no sistema.
Body JSON esperado:
{
"email": "usuario@[Link]",
"senha": "senha123",
"nome": "Nome Completo",
"cpf": "00011122233",
"telefone": "11999999999",
"tipoConta": "CUIDADOR"
}
Valores possíveis para tipoConta :
"ADMIN"
"CUIDADOR"
"DEPENDENTE"
"INDEPENDENTE"
Obs: maiúsculo ou minúsculo, ambos aceitos.
Resposta de sucesso:
{
"idUsuario": 1,
"idPessoa": 1,
"nome": "Nome Completo",
"tipoConta": "CUIDADOR",
"cpf": "00011122233",
"telefone": "11999999999",
"ativo": true
}
Validações:
Não permite cadastro de email já existente.
A senha é armazenada de forma criptografada (BCrypt).
3. Listar Pessoas
Endpoint: GET /pessoas
Descrição: Lista todas as pessoas cadastradas (precisa de autenticação).
Resposta:
[
{
"id": 1,
"nome": "Pessoa 1",
"cpf": "00011122233",
"telefone": "11999999999"
// outros campos se existirem
}
]
4. Cadastrar Pessoa
Endpoint: POST /pessoas
Descrição: Cadastra uma nova pessoa (precisa de autenticação).
Body JSON esperado:
{
"nome": "Pessoa 2",
"cpf": "99988877766",
"telefone": "11988887777"
// outros campos se existirem
}
Resposta:
Objeto da pessoa cadastrada.
5. Lógica de Login (Frontend)
Enviar POST para /auth/login com email/senha.
Guardar o token retornado.
Em toda requisição autenticada (ex: /pessoas ), enviar header:
Authorization: Bearer <token>
O token expira em 2 horas.
Se receber resposta 401, pedir novo login.
Observações
Os endpoints de login e cadastro não exigem autenticação.
Os demais endpoints exigem o token JWT.
O tipo de conta ( tipoConta ) define as permissões do usuário.
O backend usa JWT (HS256) para autenticação stateless.