Documentação do Projeto
Visão Geral
Este projeto é um sistema de gerenciamento de usuários desenvolvido utilizando Spring Boot. O sistema oferece funcionalidades de CRUD para usuários, com endpoints para criação, leitura, atualização e exclusão de usuários.
O sistema segue a arquitetura de camadas DDD, com os seguintes componentes principais:
Application: Contém os controladores REST e os modelos de API (DTOs).
Domain: Contém as entidades, servicesn mapper e repositórios do domínio.
Core: configuracao de segurança, exceptions e configurações gerais.
Spring Boot: Framework principal para desenvolvimento da aplicação.
Spring Data JPA: Abstração para acesso a dados.
Hibernate: Implementação de JPA.
PostgreSQL 16: Banco de dados relacional.
Flyway: Ferramenta para versionamento e migrações do banco de dados.
JUnit: Framework de testes.
MockMvc: Utilizado para testes de integração dos endpoints.
OpenAPI: Ferramenta para documentação da API.
Maven: Ferramenta de gerenciamento de dependências e construção do projeto.
Requisitos:
JDK 21
Maven 3.6.3 ou superior
PostgreSQL 16
A documentação da API é gerada automaticamente utilizando OpenAPI.
Para acessar a documentação da API, abra o navegador e vá para
http://localhost:8080/swagger-ui.html.
git clone https://github.com/jhonatask/sgu.git
Importe o projeto na ide de preferencia ( Recomendo Intellij IDEA)
CREATE DATABASE dbsgu;
Atualize o arquivo application.properties com as informações do seu banco de dados PostgreSQL:
Rode o projeto para criar as tabelas necessarias, use o swagger para criar um departamento e subistituir os dados da query
id na sql de criacao do usuario master (Senha e Pamonha123*) nao alterar codigo da senha aqui do sql, caso queira cadastrar um usuario via swagger
o arquivo SecurityConfig na linha 38 (.anyRequest().permitAll()) execute o projeto, e cadastre usuario com senha que desejar.
SQL insert usuario master
INSERT INTO public.users ("name", email, department_id, telefone, "password", cpforcnpj, dataalteracao) VALUES( 'nome', 'email', 'id do departamento criado'::uuid, 'telefone', '$2a$10$P5CkkDv41fmmoPwP3btzP.0bqBe3a3SPCkFJOGPMs9egCdTKM1xUy', 'cpf', NULL);
spring.datasource.url=jdbc:postgresql://localhost:5432/dbsgu
spring.datasource.username=seu-usuario
spring.datasource.password=sua-senha
As demais requisicoes tanto pelo swagger, quanto por postman ou insominia e pelo front so tem acesso apos o login.