O objetivo dessa aplicação é expor uma API RESTful de sign up/sign in.
Este projeto foi criado para o processo seletivo da Accenture.
Pacotes principais:
- Express para criação das rotas e inicio dos server.
- JWT para persistência do token por 30 minutos.
- Elephantsql para utilização do banco de dados NoSQL (MongoDB).
- Eslint para realização de testes.
Este projeto foi desenvolvido com a versão 14.7.4 do Nodejs.
Deve-se configurar as variável de ambiente .env
Exemplo:
SECRET=XXXX
EXPIRESIN='30m'
DATABASE=teste
HOST=teste.db.elephantsql.com
PASSWORD=ahsgdhagdjad
Deve-se instalar as dependência utilizando:
npm install ou npm i
Para iniciar aplicação:
npm run dev
POST http://localhost:5000/signup
{
"nome": "Laura Xavier",
"email": "lauraxavier@teste.com.br",
"senha": "123456",
"telefone": "985789987"
}
Exemplo de retorno com status 200
{
"user": {
"id": 1,
"nome": "Laura Xavier",
"email": "lauraxavier@teste.com.br",
"senha": "$2a$10$mMSoaR65d/eZRP9HkD/5PeQdC9BxXYoAUFVP/KzGELj6uaasfghj",
"telefone": "985789987",
"data_criacao": "2021-11-08T19:43:02.861Z",
"data_atualizacao": "2021-11-08T19:43:02.861Z",
"ultimo_login": "2021-11-08T19:43:02.861Z"
}
}
Exemplo de retorno com status 401
{
"message": "E-mail já existente"
}
POST http://localhost:5000/signin
{
"email": "lauraxavier@teste.com.br",
"senha": "123456"
}
Exemplo de retorno com status 200
{
{
"user": {
"id": 1,
"nome": "Laura Xavier",
"email": "lauraxavier@teste.com.br",
"senha": "$2a$10$mMSoaR65d/eZRP9HkD/5PeQdC9BxXYoAUFVP/KzGELj6uaasfghj",
"telefone": "985789987",
"data_criacao": "2021-11-08T19:43:02.861Z",
"data_atualizacao": "2021-11-08T19:46:07.690Z",
"ultimo_login": "2021-11-08T19:46:07.690Z",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImVtYWlsMTA0MjE3MkB0ZXN0ZUFnZW5kYW1lbnRvLmNvbS5iciIsImlhdCI6MTYzNjQwMDc2NywiZXhwIjoxNjM2NDg3MTY3fQ.NFBnKNJB2xuqMJLlADJ1pkN2saSqbzDe5RKtkKIcl5e"
}
}
}
Exemplo de retorno com status 401
{
"message": "Usuário e/ou senha inválidos"
}
GET http://localhost:5000/users/:user_id
Exemplo
"http://localhost:5000/users/:1"
Observação: será necessário preencher o user_id com o usuário do cliente que deseja obter as informações. Também será preciso passar no header o parâmento authentication, utilizando a opção Token Bearer. O user_id e token foram retornados na rota de sign-in.
Exemplo de retorno com status 200
{
"user": {
"id": 1,
"nome": "Laura Xavier",
"email": "lauraxavier@teste.com.br",
"senha": "$2a$10$mMSoaR65d/eZRP9HkD/5PeQdC9BxXYoAUFVP/KzGELj6uaasfghj",
"telefone": "985789987",
"data_criacao": "2021-11-08T19:43:02.861Z",
"data_atualizacao": "2021-11-08T19:46:07.690Z",
"ultimo_login": "2021-11-08T19:46:07.690Z"
}
}
Exemplo de retorno com status 401
{
"message": "Não autorizado"
}
Caso o token esteja expirado
{
"message": "Sessão inválida"
}
Os testes foram realizados utilizando o Eslint. O arquivo pode ser encontrado em -> .eslintrc.json