Projeto backend desenvolvido com Spring Boot que oferece endpoints para criação e autenticação de usuários, utilizando criptografia de senhas com SHA-256 e JWT (JSON Web Token) para controle de acesso.
Conta com tratamento de exceções, validações, documentação Swagger e está pronto para rodar via Docker.
- 📥 Criar usuário
- 🔐 Autenticar usuário
- 🔒 Geração de token JWT
- 🧾 Validação de dados via Bean Validation
- 🧰 Criptografia de senha com SHA-256
- 🛑 Tratamento de exceções customizadas
- 📄 Documentação automática com Swagger
- 🐳 Integração com Docker (Dockerfile + Docker Compose)
- Java 17
- Spring Boot
- Spring Web
- Spring Data JPA
- Bean Validation
- PostgreSQL
- JWT (
io.jsonwebtoken) - Docker e Docker Compose
- Swagger (Springfox)
- JPQL
src
├── controllers
│ └── UsuariosController.java
├── dtos
│ ├── CriarUsuarioRequestDto.java
│ ├── CriarUsuarioResponseDto.java
│ ├── AutenticarUsuarioRequestDto.java
│ └── AutenticarUsuarioResponseDto.java
├── entities
│ └── Usuario.java
├── repositories
│ └── UsuarioRepository.java
├── service
│ └── UsuarioService.java
├── helpers
│ ├── CryptoHelper.java
│ └── JwtHelper.java
├── exception
│ ├── EmailJaCadastradoException.java
│ ├── AcessoNegadoException.java
│ └── ValidationExceptionHandler.java
- Java 17
- Docker
- Docker Compose
-
Clone o repositório:
git clone https://github.com/seu-usuario/seu-repo.git cd seu-repo -
Execute com Docker Compose:
docker-compose up --build
-
Acesse a documentação da API:
http://localhost:8080/swagger-ui/index.html
POST /api/v1/usuarios/criarBody:
{
"nome": "Kaio Muniz",
"email": "kaio@email.com",
"senha": "123456"
}POST /api/v1/usuarios/autenticarBody:
{
"email": "kaio@email.com",
"senha": "123456"
}Retorno:
{
"id": 1,
"nome": "Kaio Muniz",
"email": "kaio@email.com",
"accessToken": "jwt-token-gerado",
"dataHoraAcesso": "2025-09-11T10:00:00",
"dataHoraExpiracao": "2025-09-11T11:00:00"
}| Tipo de Erro | Status | Mensagem |
|---|---|---|
| Dados inválidos | 400 | Lista de mensagens de validação |
| E-mail já cadastrado | 409 | "E-mail informado já está em uso" |
| Acesso negado (login errado) | 401 | "Acesso negado. Usuário ou senha inválido" |
# Criar usuário
curl -X POST http://localhost:8080/api/v1/usuarios/criar -H "Content-Type: application/json" -d '{"nome":"Kaio", "email":"kaio@email.com", "senha":"123456"}'
# Autenticar usuário
curl -X POST http://localhost:8080/api/v1/usuarios/autenticar -H "Content-Type: application/json" -d '{"email":"kaio@email.com", "senha":"123456"}'- Projeto iniciado com Spring Web e DevTools
- Configuração do
application.propertiescom PostgreSQL - Criação do
Dockerfileedocker-compose.yml - Configuração do Swagger
- Entidade
Usuariomapeada + JPQL personalizado - Criptografia de senha com
CryptoHelper - Geração de tokens JWT com
JwtHelper UsuarioServiceimplementada (criar e autenticar)UsuariosControllercom endpoints- Exceções customizadas (
EmailJaCadastradoException,AcessoNegadoException) - Handlers globais (
ValidationExceptionHandler) - Testes iniciais de autenticação e criação de usuários
- Refresh Token
- Logout com blacklist de tokens
- Integração com serviço de e-mail
- Autenticação via OAuth2 (Google, GitHub)
- Testes unitários e integração
💬 Projeto criado para fins de estudo e prática com Spring Boot + JWT.