Skip to content

matheusinit/authetication-api

Repository files navigation

Authenticação API

API Rest de autenticação de usuários desenvolvida em Node.js para aplicar conceitos de Test Driven Development (TDD) e SOLID. E aplicar os conceitos de autenticação utilizando tokens e praticar com algumas tecnologias, como: MongoDB, Docker, Nodemailer, Swagger

Status

✔️ Concluído ✔️

Features

  • Cadastro do usuário
  • Autenticação
  • Enviar email de redefinição da senha
  • Recuperação de senha
  • Enviar código de confirmação
  • Ativar conta

Para mais detalhes de requisitos e regras de negócio, veja a documentação.

Tecnologias

  • Node.js - v12.22.10
  • Typescript (Tipagem para Javascript)
  • Express
  • MongoDB
  • jsonwebtokens
  • Jest (Teste automatizados)
  • Docker
  • lint-staged
  • husky
  • Eslint
  • validator
  • fast-glob
  • Nodemailer
  • Handlebars Template
  • Swagger

Documentação

Ao executar a aplicação, é possível visualizar a documentação das rotas em localhost:3000/api-docs.

Como rodar

Pré-requisitos

Antes de tudo, vai precisar ter instalado em sua máquina as ferramentas:

Recomendado utilização de Docker:

Para instalação do Docker: https://docs.docker.com/get-docker/

Configurar ambiente

# Jwt
SECRET = secret to use in jwt
EXPIRES_IN = 1d # example

# MongoDB

MONGO_URL = mongodb://username:password@localhost:27017/?authMechanism=DEFAULT # example

MONGO_USER = username # example
MONGO_PASS = password # example

# Mail Service

SMTP_HOST =
SMTP_PORT =
SMTP_USER =
SMTP_PASS =
  • Para gerar SECRET para JsonWebToken:

  • EXPIRES_IN é o tempo em que o token JWT se expira

    • 10h para 10 horas
    • 20d para 20 dias
    • 60s para 60 segundos
  • MONGO_URL é a URI do MongoDB

    • Utilize os paramêtros usado em MONGO_USER e MONGO_PASS
  • MONG0_USER é nome do administrador do banco de dados

  • MONGO_PASS é a senha do administrador do banco de dados

  • SMTP é sobre o serviço de email

    • Para desenvolvimento, eu recomendo utilizar Ethereal

Gerenciamento de containers

  • Para construir os containers:
npm run up
  • Para destruir os containers
npm run down

Obs.: A utilização de containers é opcional, mas recomendado

Utilização sem containers

  • Para executar a aplicação sem os containers, configure o ambiente de desenvolvimento (arquivo .env) com o seu MongoDB. E prossiga seguindo a documentação.

Rodando API (passa-a-passo)

  • Clone o repositório
git clone https://github.com/matheusinit/authetication-api.git
  • Acesse a pasta do projeto
cd authentication-api
  • Instale as dependências
npm install
  • Execute a aplicação em desenvolvimento
npm run dev

O servidor estará rodando por padrão em http://localhost:3000

Executar testes

  • Executar testes unitários
npm run test:unit
  • Executar testes de integração
npm run test:integration
  • Executar todos os testes
npm run test

Autor

Feito com ❤️ por Matheus Oliveira

Linkedin Badge

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published