Este projeto é uma API construída usando Java, Spring Boot, PostgreSQL, Flyway Migrations, Spring Security e JWT para controle de autenticação e autorização de usuários.
A API oferece os seguintes endpoints:
- GET /product: Retorna uma lista de todos os produtos (acesso para todos os usuários autenticados).
- POST /product: Registra um novo produto (acesso restrito a usuários com a permissão de ADMIN).
- POST /auth/login: Permite o login na aplicação.
- POST /auth/register: Registra um novo usuário na aplicação.
A autenticação é gerida pelo Spring Security, e a API possui os seguintes papéis:
- USER: Papel padrão para usuários logados.
- ADMIN: Papel com permissões administrativas para gerenciar dados, como o registro de novos produtos.
Para acessar os endpoints protegidos como um usuário ADMIN, é necessário fornecer as credenciais de autenticação no cabeçalho da requisição.