API de Usuários
A API de Usuários do FitLocus fornece endpoints para gerenciamento de contas de usuário, autenticação, perfis e preferências.Visão Geral
A API de Usuários permite:
- Registro e autenticação de usuários
- Gerenciamento de perfis de usuário
- Recuperação e atualização de informações pessoais
- Gerenciamento de preferências e configurações
- Consulta de métricas e estatísticas de usuário
Tipos de Usuário
O FitLocus possui dois tipos principais de usuário:Modelo de Dados
UserDTO
O objeto UserDTO é utilizado para transferência de dados de usuário entre o cliente e o servidor:RegisterRequest
Objeto utilizado para registro de novos usuários:LoginRequest
Objeto utilizado para autenticação de usuários:AuthResponse
Resposta retornada após autenticação bem-sucedida:Endpoints Principais
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /users/register | Registra um novo usuário |
| POST | /users/login | Autentica um usuário existente |
| POST | /users/firebase-login | Autentica usando token do Firebase |
| GET | /users/profile | Obtém o perfil do usuário autenticado |
| PUT | /users/profile | Atualiza o perfil do usuário autenticado |
| GET | /users/{id} | Obtém informações de um usuário específico |
| PUT | /users/{id} | Atualiza informações de um usuário específico |
| DELETE | /users/{id} | Remove um usuário |
| POST | /users/refresh-token | Renova o token JWT |
| POST | /users/logout | Realiza logout (invalida o token) |
| POST | /users/forgot-password | Inicia o processo de recuperação de senha |
| POST | /users/reset-password | Redefine a senha com token de recuperação |
| GET | /users/metrics | Obtém métricas do usuário autenticado |
Detalhes de Implementação
Autenticação
Todos os endpoints, exceto/users/register, /users/login, /users/firebase-login, /users/forgot-password e /users/reset-password, requerem autenticação via token JWT no cabeçalho Authorization:
Controle de Acesso
O acesso aos endpoints é controlado com base no tipo de usuário:/users/{id}, implementam verificações adicionais para garantir que um usuário só possa acessar seus próprios dados ou dados de usuários relacionados (no caso de personal trainers e seus alunos).
Validação de Dados
Todos os endpoints que recebem dados do cliente implementam validação rigorosa:@Valid ativa a validação baseada em anotações como @NotNull, @Email, @Size, etc., definidas no objeto RegisterRequest.
Exemplos de Uso
Registro de Usuário
Login
Obter Perfil
Atualizar Perfil
Códigos de Status
| Código | Descrição |
|---|---|
| 200 | OK - A requisição foi bem-sucedida |
| 201 | Created - Um novo usuário foi criado com sucesso |
| 400 | Bad Request - A requisição contém dados inválidos |
| 401 | Unauthorized - Autenticação necessária |
| 403 | Forbidden - Sem permissão para acessar o recurso |
| 404 | Not Found - Usuário não encontrado |
| 409 | Conflict - Email já registrado |
| 500 | Internal Server Error - Erro interno do servidor |
Considerações de Segurança
- Senhas: As senhas são armazenadas utilizando o algoritmo BCrypt para hash seguro.
- Dados Sensíveis: Informações sensíveis como senha nunca são retornadas nas respostas da API.
- Rate Limiting: A API implementa limitação de taxa para prevenir ataques de força bruta.
- Validação: Todos os dados de entrada são validados rigorosamente para prevenir injeção de dados maliciosos.
- HTTPS: Todas as comunicações com a API devem ser realizadas através de HTTPS.