42 lines
1.4 KiB
Markdown
42 lines
1.4 KiB
Markdown
|
|
# Backend - Servers Manager
|
||
|
|
|
||
|
|
API REST em Spring Boot 4 (Java 21) com autenticação JWT stateless e refresh token em cookie HttpOnly.
|
||
|
|
|
||
|
|
## Stack
|
||
|
|
- Spring Boot 4.0 (Web MVC, Validation, Data JPA)
|
||
|
|
- Spring Security (JWT, stateless)
|
||
|
|
- MapStruct 1.6, Lombok
|
||
|
|
- PostgreSQL (padrão) ou H2
|
||
|
|
- JJWT 0.12 para geração/validação de tokens
|
||
|
|
|
||
|
|
## Configuração
|
||
|
|
Variáveis principais:
|
||
|
|
- `DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_USER`, `DB_PASSWD` — Postgres
|
||
|
|
- `JWT_SECRET` — chave HMAC >= 32 chars
|
||
|
|
- `security.jwt.access-token-expiration` — padrão 30m
|
||
|
|
- `security.jwt.refresh-token-expiration` — padrão 30d
|
||
|
|
|
||
|
|
Arquivo `src/main/resources/application.yaml` já traz defaults; adicione um `.env` ou exporte variáveis conforme o ambiente.
|
||
|
|
|
||
|
|
Seed: `src/main/resources/data.sql` cria usuário padrão `default@hittelco.com` (senha `senha123`, bcrypt).
|
||
|
|
|
||
|
|
## Endpoints chave
|
||
|
|
- `POST /api/auth/login` — autentica e devolve `access_token` (cookie) + `refresh_token` (HttpOnly).
|
||
|
|
- `POST /api/auth/refresh` — reemite cookies a partir do refresh.
|
||
|
|
- `POST /api/auth/signup` — cria usuário (requer auth).
|
||
|
|
- CRUD `/api/users` e `/api/servers` protegidos.
|
||
|
|
|
||
|
|
## Rodar local
|
||
|
|
```bash
|
||
|
|
./gradlew bootRun
|
||
|
|
```
|
||
|
|
API em `http://localhost:8080` com CORS liberado para `http://localhost:5173`.
|
||
|
|
|
||
|
|
## Testes
|
||
|
|
```bash
|
||
|
|
./gradlew test
|
||
|
|
```
|
||
|
|
|
||
|
|
## Postman
|
||
|
|
Use `postman_collection.json` na raiz; o login grava cookies e variáveis `access_token`/`refresh_token`.
|