Autenticação (Sistema de Login) com Token JWT

Link do repositório no GitHub: https://github.com/FabricaDeSinapse/nestjs-auth

Link do Miro: https://miro.com/app/board/uXjVOXehwN4=/

Iniciando um projeto NestJS

Antes de iniciar, certifique-se de que você possui um projeto NestJS criado e que a CLI do NestJS está instalada no seu computador.

Prisma

Instalar o prisma

Inicializar o prisma

prisma/schema.prisma

Arquivo .env

Arquivo .env preenchido

Migrar o banco

Esse comando deverá instalar a dependência @prisma/client no projeto.

Criação do módulo do prisma

Comandos na CLI para criação dos arquivos

Conteúdo dos arquivos

src/prima/prisma.module.ts

src/prisma/prisma.service.ts

Dependências

  • @nestjs/passport

  • @nestjs/jwt

  • bcrypt

  • class-validator

  • class-transformer

  • passport

  • passport-jwt

  • passport-local

Comando para instalar tudo ao mesmo tempo:

Dependências Dev

  • @types/passport-jwt

  • @types/passport-local

  • @types/bcrypt

Códigos

Usuários que serão autenticados: diretório src/user

Comando do terminal para criação dos arquivos

src/user/entities/user.entity.ts

src/user/dto/create-user.dto.ts

src/user/user.controller.ts

src/user/user.service.ts

src/user/user.module.ts

Ativando validação do class-validator no arquivo main.ts

Autenticação: diretório auth

src/auth/auth.module.ts

src/auth/auth.controller.ts

src/auth/auth.service.ts

src/auth/strategies/jwt.strategy.ts

src/auth/guards/jwt-auth.guard.ts

src/auth/strategies/local.strategy.ts

src/auth/guards/local-auth.guard.ts

Importando tudo no AppModule

Diretório src/auth/models

src/auth/models/AuthRequest.ts

src/auth/models/LoginRequestBody.ts

src/auth/models/UserFromJwt.ts

src/auth/models/UserPayload.ts

src/auth/models/UserToken.ts

Decorators: diretório src/auth/decorators

src/auth/decorators/current-user.decorator.ts

src/auth/decorators/is-public.decorator.ts

Tratamento de erros: diretório src/auth/errors

src/auth/errors/unauthorized.error.ts

Ativando validação de dados para o Login

src/auth/middlewares/login-validation.middleware.ts

Requisições

Criação de usuário

❗ Importante ❗

Para criar um usuário, certifique-se de liberar o endpoint antes com o decorator @IsPublic().

Caso a criação de usuários da sua aplicação seja restrita, remova o decorator IsPublic(), pois as próximas criações deverão ser autenticadas por um usuário já existente.

Endpoint: /user

Method: POST

Request Body:

Response Body (Status 201):

Realizando o login

Endpoint: /login

Method: POST

Request Body:

Response Body (Status 200):

Last updated

Was this helpful?