Skip to content

AsrielDreemurrGM/User_CRUD_API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRUD de Usuários - Back-End

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.

Repositório do Sistema Frontend

🔗 User_CRUD

🚀 Funcionalidades

  • 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

🛠️ Stack Tecnológica

  • 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

📂 Estrutura do Projeto

  • 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

🧪 Testes e Validações

  • 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

⚙️ Primeiros Passos

  1. Clone o repositório:
    git clone https://github.com/AsrielDreemurrGM/User_CRUD_API.git
  2. Siga o passo a passo instruido no schema.sql:
  3. 📂 Banco de Dados (Schema)

    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:

    • 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

    📜 Histórico de Commits Relevantes

    • 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

About

API back-end do sistema de CRUD de usuários com Spring Boot e Java 21. Gerencia autenticação JWT, criptografia de senhas com BCrypt e operações CRUD no PostgreSQL. Inclui bootstrap inicial de admin, tratamento de erros estruturado e filtros de segurança via Spring Security.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages