Skip to content

A base project to serve for other projects that use authentication.

License

Notifications You must be signed in to change notification settings

Almadavic/security-standard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SecurityStandard

NPM

O QUE É A APLICAÇÃO :

Essa é uma aplicação para ser o esqueleto (base) de outras API's futuras que necessitam de autenticação JWT e autorização. Além desses 2 recursos, a API conta com outras diversas configurações padrões que podem ser aproveitadas em uma futura API, como:

  • Configurações padrões de Segurança no geral.
  • Entidades User e Role totalmente prontas.
  • Configurações padrões do Swagger.
  • Tratamento de Exceptions através de classes Handler e classes personalizadas.
  • Diversos Design Patterns.
  • Dados iniciais para população do banco.
  • Controllers, Services e Repositories padrões pré configurados.
  • DTO's de request e response.
  • Regras de négocio.
  • Exception personalizadas.
  • Funcionalidades extras além de autenticação.
  • Uma grande cobertura de testes.

OBJETIVO :

Sempre que criamos uma API, temos de fazer várias configurações, até mesmo, configurações padrões, que sempre serão as mesmas independente da API. Isso é uma coisa que cansa muito e acaba tomando muito tempo, para resolver esse problema, desenvolvi essa "api esqueleto" para sempre utilizar esses padrões em uma nova api que eu esteja desenvolvendo, desse modo, economizando muito tempo. Obs: Essa API seria usada de base para outras API caso essa por sua vez seja uma aplicação que precise de autenticação e autorização.

FUNCIONALIDADES :

  • O Usuário se registra no sistema.
  • O Usuário se autentica no sistema.
  • O Usuário pode entrar no seu perfil (ver as informações de sua conta).
  • O Usuário pode mudar a sua senha.
  • O Administrador pode ver uma página de usuários cadastrados no sistema.
  • O Administrador pode ver qualquer usuário registrado no sistema em específico pelo id.

VERSIONAMENTO :

Versão do Java: 17

Versão do Spring Boot: 3.0.1

FERRAMENTAS :

Back end:

  - Java
  - Spring Boot c/ Spring Security e JWT.
  - JPA / Hibernate
  - Maven

Dependências:

 Data JPA - > Utilizando o JPA para fazer a ponte entre o banco de dados e a aplicação -> ORM
 
 Validation -> Utilizado para proibir requisições com dados inválidos ou com um formato inválido.
 
 Web -> É uma aplicação WEB, Utilizado para receber requisições, devolver uma resposta ...

 H2 - > Utilizado esse banco em MEMÓRIA para fazer testes, ambiente de teste.
 
 PostgreSQL -> Utilizado esse BANCO no ambiente de desenvolvimento e produção.
 
 Test -> Foram feitos testes na aplicação com JUNIT ( Testes de integração e Unidade).
 
 Java-JWT -> A aplicação é stateless, por isso precisamos da biblioteca para gerar e verificar o token. 
 
 Security -> Utilizado para fazer a segurança do sistema - > Autorização e Autenticação.
 
 OpenAPI -> Utilizado para documentar a API (Swagger).
 
 LomBok -> Utilizado para evitar muitas linhas de código através de annotations.

 JacksonDatatype - > Utilizado para transformar objetos em JSON.

Programas Utilizados :

Postman - Utilizado para fazer as requisições (CONSUMIR) a aplicação.

IntelliJ - IDE escolhida para desenvolver o projeto.

pgAdmin4 - Plataforma utilizada para fazer a manipulação e a leitura dos dados de uma base de dados do banco PostgreSQL.

Git e GitHub - Utilizados para commitar o projeto e subir o código para a nuvem(remoto).

JWT.IO - Depurar o token e ver o seu formato.

Bancos de Dados :

PostgreSQL - Usado em ambiente de desenvolvimento e produção.

H2 - Usado em ambiente de teste.
  • Swagger :

  • Schema :

INFORMAÇÕES ADICIONAIS :

Linhas de Código: 2217

Classes / Arquivos implementados: 79

Testes: 40

Link index do Swagger: /security-api/swagger-ui/index.html

LINKS ADICIONAIS :

Explicação da API em vídeo no YouTube : https://youtu.be/58U1HHhoS2I

Perfil no Linkedin : https://www.linkedin.com/in/victoralmada/

About

A base project to serve for other projects that use authentication.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages