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
prisma/schema.prismaArquivo .env
.envArquivo .env preenchido
.env preenchidoMigrar 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/jwtbcryptclass-validatorclass-transformerpassportpassport-jwtpassport-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
src/userComando do terminal para criação dos arquivos
src/user/entities/user.entity.ts
src/user/entities/user.entity.tssrc/user/dto/create-user.dto.ts
src/user/dto/create-user.dto.tssrc/user/user.controller.ts
src/user/user.controller.tssrc/user/user.service.ts
src/user/user.service.tssrc/user/user.module.ts
src/user/user.module.tsAtivando validação do class-validator no arquivo main.ts
class-validator no arquivo main.tsAutenticação: diretório auth
authsrc/auth/auth.module.ts
src/auth/auth.module.tssrc/auth/auth.controller.ts
src/auth/auth.controller.tssrc/auth/auth.service.ts
src/auth/auth.service.tssrc/auth/strategies/jwt.strategy.ts
src/auth/strategies/jwt.strategy.tssrc/auth/guards/jwt-auth.guard.ts
src/auth/guards/jwt-auth.guard.tssrc/auth/strategies/local.strategy.ts
src/auth/strategies/local.strategy.tssrc/auth/guards/local-auth.guard.ts
src/auth/guards/local-auth.guard.tsImportando tudo no AppModule
AppModuleDiretório src/auth/models
src/auth/modelssrc/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/decoratorssrc/auth/decorators/current-user.decorator.ts
src/auth/decorators/is-public.decorator.ts
Tratamento de erros: diretório src/auth/errors
src/auth/errorssrc/auth/errors/unauthorized.error.ts
Ativando validação de dados para o Login
src/auth/middlewares/login-validation.middleware.ts
src/auth/middlewares/login-validation.middleware.tsRequisiçõ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
decoratorIsPublic(), 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?