Esse é um projeto backend de um sistema de login que realiza identificação, autenticação e autorização. Conta com rota privada, registro de usuário e algumas medidas de segurança. O projeto foi separado por diferentes pastas com o objetivo de praticar padrões de arquitetura para criar um código simples de ler e fazer manutenção.
- NodeJS para criar o backend da aplicação.
- Insomnia para testar as rotas, validações etc.
- bcrypt para criptografar a senha que é criada e enviada para o banco de dados.
- dotenv uma biblioteca usada para armazenar variáveis de ambiente e assim criar uma segurança das informações que são sensíveis.
- express um framework para o NodeJS que facilita na criação de aplicações backend.
- jsonwebtoken é um padrão utilizado para segurança de informações. Usado neste projeto para criar a autorização no acesso de rotas privadas.
- mongoose é uma biblioteca usada para modelagem de dados do MongoDB, conexão com o banco, recuperação de dados do banco etc
- validator é uma biblioteca que valida informações recebidas. Nesse projeto utilizei para validar o formato de e-mail.
- "/login" utiliza o método POST para realizar o login.
- "/cadastro" utiliza o método POST para inserir um usuário e senha no banco de dados.
- "/user/:email" utiliza o método GET e tem como função fazer o papel da rota privada. Ou seja, só poderá acessá-la com um token válido.
Usando o Insomnia ou Postman, selecione o método POST e digite http://localhost:3000/cadastro. Logo após, preencha o body usando o formato JSON com email, senha, confirmarSenha para realizar o cadastro de usuário. Se estiver tudo certo, irá retornar uma mensagem de sucesso com um status 201 Created
Selecione o método POST e digite http://localhost:3000/login. Caso a informação preenchida esteja cadastrada no banco de dados, terá uma mensagem de sucesso seguido de um token de validação.
Nessa rota (http://localhost:3000/user/email), apenas poderá ter acesso quando tiver um token válido. Selecione o tipo de autenticação "Bearer Token" como mostra a imagem
Cole o token recebido após o login no input "Token" e após confirmar, repare que se o token for validado, você irá receber um retorno de sucesso com status 200
Repare que graças à biblioteca bcrypt, a senha cadastrada chega ao banco de dados totalmente criptografada.
⚠ Como foi usado o arquivo .env para a criação do projeto e essa aplicação não está hospedada, logo após clonar o repositório, você vai precisar criar um arquivo com o nome de ".env" e simplesmente colar as seguintes informações dentro dele:
DB_USERNAME = admin
DB_PASSWORD = 4Tv6oQyZOhmfLAbm
SECRET_KEY = eajuUlHFRoaMY4JGxAYmwCww4ZpfItndtDT486BJckc
Essas variáveis de ambiente lhe permitirão o acesso ao banco de dados MongoDB Atlas, onde ficarão salvas as informações que forem cadastradas. Por mais que as senhas sejam criptografadas, evite usar alguma senha real.
- Clone este repositório
$ git clone https://github.com/GabeOP/teste-dev-backend.git
- Instale as dependências que estão listadas no arquivo package.json
$ npm install
- Execute o servidor
$ node index.js
Após esses três passos, o servidor deve estar rodando no http://localhost:3000 e feito a conexão com o banco de dados. Clique aqui caso queira visualizar esse banco de dados. Você deverá realizar o login no MongoDB Atlas.