Api de Login com sistema de Produtos (Java 🚀 com Spring Boot 🍃, Spring Security 🛡️ + JWT 🔐 + Oauth2 🛡 e MySQL 🐬)
Este é um projeto Java Spring boot, que consiste em uma API para cadastro e login de usuários, que podem realizar pedidos de acordo com os produtos registrados no sistema, essa Api possui segurança via spring security, jwt e oauth2, cada role tem sua permissão, sendo elas os ADMIN e COMMON.
-
É necessário ter o Java 21 e o MySQL instalados no PC.
-
Clone o repositório para sua máquina local:
git clone https://github.com/Thullyoo/user-microservice
-
Navegue até o diretório do projeto:
cd user-microservice -
Instale as dependências com o maven
-
Coloque suas variáveis necessárias no application.properties, as seguintes variáveis são necessárias:
- spring.datasource.url
- spring.datasource.username
- spring.datasource.password
-
É necessário criar duas chaves, sendo a pública e a privada e armazenar elas em application.properties com o nome de app.key para a privada e app.pub para a pública.
-
Inicie a aplicação
A aplicação estará rodando em http://localhost:8080.
POST /login: Logar usuário. (Não é necessário estar autenticado, pois geram o token para a autenticação)POST /register: Registrar usuário. (Não é necessário estar autenticado, pois geram o token para a autenticação)POST /product/register: Registrar produto. (É necessário estar autenticado via Bearer token como usuário com role ADMIN)POST /order/create: Criar pedido. (É necessário estar autenticado via Bearer token com role COMMON)GET /users/view: Visualizar todos os usuários. (É necessário estar autenticado via Bearer token como usuário com role ADMIN)GET /product/view: Visualizar todos os produtos. (É necessário estar autenticado via Bearer token como usuário com role ADMIN ou COMMON)GET /order/view/all: Visualizar todos os pedidos. (É necessário estar autenticado via Bearer token como usuário com role ADMIN)GET /order/view: Visualiza todos os pedidos de um usuário. (É necessário estar autenticado via Bearer token com role COMMON)
As requisições e respostas são no formato JSON. Exemplo de como se deve passar o JSON no POST:
POST /register:
{
"name": "name",
"password": "password",
"email": "email"
}POST /login:
{
"email": "email",
"password": "password"
}POST /product/register
{
"name": "name",
"price": 0.0,
"quantity": 1
}POST /order/create
{
"productsId": [
1,
2
],
"emailUser": "email@email.com"
}GET /order/view
{
"email": "email@email.com"
}