Skip to content

About

Crud Simples com Autenticação e Autorização com Spring Security, JWT Tokens e Roles

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

📦 Catálogo Backend API

API REST desenvolvida em Java + Spring Boot para gerenciamento de produtos, com autenticação e autorização via JWT e suporte a roles de usuários. Ideal para aplicações de catálogo, marketplace ou ecommerce.


🧠 Visão Geral

Este projeto fornece endpoints protegidos para manipulação de produtos e autenticação de usuários. A estrutura inclui:

  • CRUD completo para produtos
  • Registro e login de usuários
  • Geração e validação de tokens JWT
  • Controle de acesso por roles (ADMIN, USER)
  • Segurança baseada em filtros e configuração com Spring Security

📁 Estrutura do Projeto

src
└── main
    ├── java
    │   └── com.catavirtual.catalogo
    │       ├── controllers
    │       │   ├── AuthenticationController.java
    │       │   └── ProductController.java
    │       ├── domain
    │       │   ├── product
    │       │   │   ├── Product.java
    │       │   │   └── ProductRequest.java
    │       │   └── user
    │       │       ├── AuthenticationDTO.java
    │       │       ├── LoginResponseDTO.java
    │       │       ├── RegisterDTO.java
    │       │       ├── User.java
    │       │       └── UserRole.java
    │       ├── infra
    │       │   ├── repositories
    │       │   │   ├── ProductRepository.java
    │       │   │   └── UserRepository.java
    │       │   ├── security
    │       │   │   ├── SecurityConfiguration.java
    │       │   │   ├── SecurityFilter.java
    │       │   │   ├── TokenService.java
    │       │   │   └── RequestsExceptionHandler.java
    │       │   └── services
    │       │       └── AuthorizationService.java
    │       └── CatalogoApplication.java
    └── resources
        ├── db.migration
        │   ├── V1_create-table-product.sql
        │   ├── V2_alter-table-product.sql
        │   └── V3_create-table-users.sql
        └── application.properties

🚀 Como executar localmente

1. Pré-requisitos

  • Java 17+
  • Maven
  • Banco de dados PostgreSQL ou H2 (memória)

2. Clonar o repositório

git clone https://github.com/raphael0627f/catalogo-backend-api.git
cd catalogo-backend-api

3. Configurar o banco de dados

No arquivo application.properties, configure o banco de dados PostgreSQL:

spring.datasource.url=jdbc:postgresql://localhost:5432/catalogo
spring.datasource.username=seu_usuario
spring.datasource.password=sua_senha
spring.jpa.hibernate.ddl-auto=update

4. Rodar a aplicação

mvn spring-boot:run

A aplicação estará acessível em:

http://localhost:8080

🔐 Autenticação

A autenticação é feita via JWT.

🔑 Login

POST /auth/login
Content-Type: application/json

{
  "login": "usuario@email.com",
  "password": "senha"
}

Resposta:

{
  "token": "eyJhbGciOiJIUzI1NiIs..."
}

🧾 Registro

POST /auth/register
Content-Type: application/json

{
  "login": "novo@user.com",
  "password": "123456",
  "role": "ADMIN"
}

🛠️ Endpoints de Produto

Método Rota Protegido? Descrição
GET /products ✅ Lista todos os produtos
POST /products ✅ Cria um novo produto
PUT /products/ ✅ Atualiza um produto
DELETE /products/{id} ✅ Remove um produto

Todos os endpoints requerem o header:

Authorization: Bearer <token>

🧪 Testes

Para rodar os testes:

mvn test

📄 Documentação da API

Você pode integrar o Swagger com a dependência:

<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-ui</artifactId>
  <version>1.7.0</version>
</dependency>

E acessar via:

http://localhost:8080/swagger-ui.html

📜 Licença

MIT License © Raphael Ferreira
github.com/raphael0627f


⭐ Considerações Finais

Esse projeto é ideal para fins de estudo, testes de integração com frontends em React, Angular ou Vue.


About

Crud Simples com Autenticação e Autorização com Spring Security, JWT Tokens e Roles

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages