Skip to content

joaodslourenco/blog-do-codigo-api

Repository files navigation

👨‍💻 Blog do Código API - Node + Express + SQLite

API para gerenciamento de blog que utiliza validação de tokens e controle de acesso através de RBAC (Role Based Access Control).

⚙️ Funcionalidades

  • Encriptação de senhas para armazenamento de usuários no banco de dados;
  • Autenticação com a utilização de tokens JWT e proteção de rotas da aplicação;
  • Utilização de access e refresh tokens para maior segurança, sendo armazenados os tokens inválidos através do Redis;
  • Envio de e-mails ao criar usuários para verificação de e-mail utilizando um token.
  • Cargos de administrador, editor e assinante, com diferentes níveis de permissão.

🛠️ Tecnologias utilizadas

As seguintes tecnologias foram utilizadas:

🚀 Como executar o projeto

Primeiro, clone o projeto:

$ git clone https://github.com/joaodslourenco/blog-do-codigo-api.git

Entre na pasta do projeto e, na raiz, rode o comando:

yarn 

OU

npm install

Crie um arquivo .env na raiz do projeto, definindo as seguintes variáveis:

NODE_ENV="development"
BASE_URL="localhost:3000"
CHAVE_JWT=(gere uma string aleatória e insira como valor da variável. Recomendo usar o módulo crypto do node, executando um console.log(crypto.randomBytes(256).toString('base64'))

OBS: caso você deseje fazer o envio de um email usando uma conta real, altere o valor da variável NODE_ENV para "production" e adicione as seguintes variáveis:

EMAIL_HOST=(endereço do seu provedor de email)
EMAIL_USUARIO=(seu email)
EMAIL_SENHA=(sua senha)

Para rodar o projeto, basta executar os seguintes comandos

yarn start

OU

npm start

Rotas da API

Para começar a utilizar a API, com o servidor sendo executado, utilize o Postman ou Insomnia para fazer requisições às rotas, conforme exposto na tabela abaixo:

Usuários

Função Tipo de requisição Campos necessários (body) Rota Access Token
Consultar usuários GET N/A "/usuario" Possível consultar informações mais completas quando utilizar token
Cadastrar novo usuário POST {
"nome": "abc",
"email": "abc",
"senha": "abc",
"cargo": "admin/editor/assinante"
}
"/usuario" N/A
Deletar pessoa DELETE N/A "/usuario/:id" Necessário
Realizar login POST {
"email": "abc",
"senha": "123"
}
"/usuario/login" Necessário
Realizar logout POST {
"refreshToken": "abc123"
}
"/usuario/logout" Necessário
Atualizar token POST {
"refreshToken": "abc123"
}
"/usuario/atualiza_token N/A
Verificar e-mail GET N/A "/usuario/verifica_email/:token" N/A
Receber token via e-mail para recuperação de senha POST {
"email": "abc"
}
"/usuario/esqueci-minha-senha" N/A
Trocar senha POST {
"token": "abc123",
"senha": "abc123"
}
"/usuario/trocar-senha" Necessário, no corpo da requisição.

Posts

Função Tipo de requisição Campos necessários (body) Rota Access Token
Consultar posts GET N/A "/post" Possível consultar informações mais completas quando utilizar token
Cadastrar novo post POST {
"titulo": "abc",
"conteudo": "abc"
}
"/post" Necessário token de usuário com permissão (admin ou editor)
Consultar post específico GET N/A "/post/:id" Possível consultar informações mais completas quando utilizar token
Deletar post DELETE N/A "/post/:id" Necessário token de usuário com permissão (admin ou editor)

About

API for blog management that uses token validation and access control through RBAC (Role Based Access Control).

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages