hit-server-manager/backend
Artur Oliveira ba3d386575 chore: merge module gitignores 2025-12-16 11:02:37 -03:00
..
gradle/wrapper feat: initial commit 2025-12-15 15:43:11 -03:00
src feat(auth): implementar funcionalidade de login de usuário 2025-12-16 10:41:26 -03:00
.gitattributes feat: initial commit 2025-12-15 15:43:11 -03:00
README.md chore(docs): alinhar integração front/backend e CORS 2025-12-16 10:50:14 -03:00
build.gradle feat(auth): implementar autenticação e autorização JWT 2025-12-16 10:23:28 -03:00
gradlew feat: initial commit 2025-12-15 15:43:11 -03:00
gradlew.bat feat: initial commit 2025-12-15 15:43:11 -03:00
postman_collection.json feat(auth): implementar autenticação e autorização JWT 2025-12-16 10:23:28 -03:00
settings.gradle feat: initial commit 2025-12-15 15:43:11 -03:00

README.md

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

./gradlew bootRun

API em http://localhost:8080 com CORS liberado para http://localhost:5173.

Testes

./gradlew test

Postman

Use postman_collection.json na raiz; o login grava cookies e variáveis access_token/refresh_token.