Criando e autenticando usuários com NodeJS — #01

Thiago Brasil
Training Center
Published in
4 min readDec 1, 2017

Depois de passar dias procurando um tema para escrever sobre, percebi que existem poucos tutoriais “fáceis” abordando o tema.

Imagem de porta com fechadura digital. Disponível em: https://www.pexels.com/photo/door-handle-key-keyhole-279810/

O que será feito por aqui?

Utilizaremos NodeJS e alguns módulos existentes por aí, como o Express, Mongoose, Bcrypt e o JWT para criar e autenticar usuários e proteger recursos da nossa aplicação.

Criando o projeto

Embed contendo os comandos descritos abaixo.

Aqui, estamos criando um diretório com o comando mkdir, abrindo o mesmo com o comando cd e iniciando o projeto com o comando npm init.
Esse comando cria o package.json, que contém informações referentes ao nosso projeto, tais como nome, versão, dependências e afins.

Preparando o ambiente

Abrindo o package.json, temos, dentre outras informações, como dito anteriormente, a relação de dependências necessárias para rodarmos o projeto.

Print do arquivo “package.json”, dando foco na parte das dependências.

Caso você tenha o arquivo, basta rodar o comando npm install e elas serão instaladas automaticamente, caso contrário, basta rodar npm install nome-do-pacote. As dependências ficam na pasta node_modules.
As “devDependencies”, são as dependências que serão utilizadas em ambiente de desenvolvimento, no nosso caso, temos o nodemon, um módulo que fica “escutando” alterações nos arquivos do servidor e, quando encontra, dá um restart.

Estrutura do projeto

Print da estrutura do projeto.

O nosso “ponto de entrada” do projeto será o arquivo index.js, mas falaremos sobre ele mais adiante.
O projeto conta com um diretório de configuração, onde, obviamente, ficam os arquivos de configuração (teremos um arquivo para a configuração do banco de dados (database.js), outro para o servidor (express.js)e outra para o jwt (jwt.js)).

O diretório server conta com uma estrutura parecida com o modelo MVC, contando com um outro diretório para as rotas (routes) e outro para scripts úteis que irão nos ajudar com coisas específicas (utils).

Print da estrutura do projeto, mostrando arquivos e pastas existentes.

Configurações do projeto

Configuração do banco de dados

Como dito, dentro da pasta config ficarão os arquivos de configuração do nosso projeto. Trabalharemos primeiro no arquivo de configuração do banco de dados, denominado database.js.

Print do arquivo “database.js”, que contém as configurações do banco de dados utilizado no projeto.

Na primeira linha, temos a importação do módulo do mongoose e, abaixo, dizemos pro mongoose utilizar as promises do NodeJS como padrão.
O método “connect” faz a conexão em si. Você deve substituir a string “sua-url” pela string de conexão com o seu banco de dados. Em geral, essa string segue o padrão “mongodb://usuario:senha@servidor:porta/nome-do-banco”.
Abaixo estamos apenas ouvindo alguns eventos que ocorrem em conexão de conexão ou erro, por exemplo.

Configuração do Express

Trabalharemos agora no arquivo express.js.

Print do arquivo “express.js”, que contém as configurações do framework que utilizaremos para lidar com requisições, respostas e afins.

Bem, importaremos os módulos necessários e exportaremos a função de configuração que retorna a variável “app”. Essa variável será utilizada em outras partes da nossa aplicação, sempre que precisarmos da instância do Express, que representa a aplicação em si.
O body-parser é quem trata as requisições e disponibiliza o objeto“req.body” para podermos trabalhar mais facilmente com os dados que são enviados para nossas rotas. Já o cosign é quem faz o autoload dos nossos scripts e injeta na nossa instância.

Configurando do JWT

Por último, mas não menos importante, o JWT. Trabalharemos no arquivo jwt.js

Print do arquivo “jwt.js”, que contém as configurações que serão utilizadas pelo JWT.

Aqui nós não temos muita coisa, apenas configuramos a palavra secreta que será utilizada para verificar o nosso token.

Configurando o nosso ponto de entrada

Agora, vamos escrever o nosso arquivo index.js, que será o ponto de entrada da aplicação.

Print do arquivo “index.js”, que contém as configurações que serão utilizadas para levantarmos o servidor.

Importamos a configuração do Express e atribuímos à variável “app” e também importamos a configuração do nosso banco de dados.
Abaixo, utilizando a variável “app”, levantamos o servidor utilizando o método “listen”, passando a porta que foi definida na configuração do Express e uma função de callback, que apenas imprime uma mensagem no terminal.

Com isso, temos o nosso servidor configurado e rodando.

No próximo artigo, iremos escrever os models, controllers e rotas para possibilitar o cadastro de usuários.

--

--