Este projeto é a API back-end de um sistema de gerenciamento de usuários, construída em Spring Boot com Java 21. Ele gerencia autenticação via JWT, criptografia de senhas com BCrypt e operações CRUD de usuários no banco PostgreSQL. Implementa tratamento de erros estruturado com exceções customizadas e validação de dados de entrada.
🔗 User_CRUD- CRUD completo de usuários com validação de dados
- Registro e edição de usuários com senha criptografada
- Autenticação via JWT para todas as rotas protegidas
- Bootstrap inicial do sistema criando usuário admin e gerando token JWT
- Tratamento de erros com respostas estruturadas para frontend
- Filtro de requisições para validação de tokens JWT
- Configuração de CORS para integração com front-end
- Persistência de dados no PostgreSQL
- Java: 21
- Spring Boot: 3.5.7
- Spring Security: Autenticação e autorização usando JSON Web Token (JWT)
- PostgreSQL: Banco de dados relacional
- Lombok: Redução de boilerplate code
- Maven: Gerenciamento de dependências
- BCrypt: Criptografia de senhas
- controller: Endpoints REST para CRUD de usuários, login e bootstrap
- service: Lógica de negócio e validação de dados
- repository: Interfaces JPA para acesso ao banco de dados
- model: Entidades JPA representando usuários e inicialização do app
- security: JWTUtil, filtros de autenticação e configuração do Spring Security
- exception: Exceções customizadas e tratamento global de erros
- Validação de dados de entrada no serviço de usuários
- Tratamento de erros estruturado com mensagens claras para frontend
- Bootstrap inicial para criar admin e gerar token JWT
- Autenticação testada com JWT e filtros de segurança Spring Security
-
Clone o repositório:
git clone https://github.com/AsrielDreemurrGM/User_CRUD_API.git - Siga o passo a passo instruido no schema.sql:
- Senhas devem ser criadas via backend (BCrypt).
- Não insira usuários manualmente; use a rota de bootstrap.
- JWT possui validade de 24 horas.
- Se limpar tabelas ou expirar o token, execute no navegador:
localStorage.removeItem('token') - Em caso de mais dúvidas sobre a criação do banco consulte o arquivo schema.sql
-
Após ter o sistema backend rodando, clone e execute o projeto frontend e abra no
navegador:
http://localhost:5173 - Implementação de UserController e DTOs para CRUD
- Adição de AuthController com login JWT
- Configuração de WebSecurityConfig e JWTRequestFilter
- Criação de BootstrapController e serviço de inicialização
- Refatoração do JWTUtil para usar senha do banco como chave de assinatura
- Tratamento de exceções customizadas: UserNotFoundException, InvalidUserDataException, AdminNotFoundException
- Integração completa com PostgreSQL e criptografia de senhas com BCrypt
O projeto utiliza PostgreSQL. Abaixo está o script de criação do banco e tabelas principais. Execute-o no terminal SQL (psql) ou pgAdmin antes de rodar o backend.
-- Criação do banco
CREATE DATABASE usercruddb;
-- Conexão
\c usercruddb;
-- Tabela de usuários
CREATE TABLE IF NOT EXISTS usuarios (
id SERIAL PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
senha VARCHAR(255) NOT NULL
);
-- Tabela de controle de inicialização
CREATE TABLE IF NOT EXISTS app_init (
id SERIAL PRIMARY KEY,
initialized BOOLEAN NOT NULL DEFAULT FALSE
);
INSERT INTO app_init (initialized)
VALUES (FALSE)
ON CONFLICT DO NOTHING;Observações: