Skip to content

Releases: ruslanguns/nestjs-myblog

Dominicode Live Coding 30-08-2020

31 Aug 00:42
Compare
Choose a tag to compare

Changelog 31-08-2020

  • Linting
  • Formating
  • Readme updated

Dominicode Live Coding 30-08-2020

Video: https://www.youtube.com/watch?v=kjr54SpV_eQ

  • Creación del repositorio
  • Clonar repositorio
    git clone -b livecoding/2 https://github.com/ruslanguns/nestjs-myblog.git myblog
  • Implementando la autenticación de usuarios

Requisitos:

Paquetes:

# LOCAL STRATEGY
- @nestjs/passport
- passport
- passport-local
- @types/passport-local (DEV)

# JWT STRATEGY
- @nestjs/jwt
- passport-jwt
- @types/passport-jwt (DEV)
  • Estructura de carpetas que usaremos.
  • Configuración básica siguiendo la Documentacion oficial
  • Inyectar PassportModule
  • Crear el provider localStrategy e implementarlo conjunto al servicio
  • Mi primer Custom Decorator para obtener el usuario
  • Inyectar JwtModule
  • Implementar el provider jwtStrategy e implementarlo
  • Método de Login JWT y endpoint profile
  • Error handling con JWT en el Guard
  • Configuración para el Swagger addBearerAuth()
  • Gestionar los Roles con el paquete nest-access-control

Requisitos:

Paquetes:

- nest-access-control
  • Modificación de UserModel para almacenar los roles
  • Creación del archivo app.roles.ts y utilizar builder
  • Inyectar el AccessControlModule en el AppModule
  • Creación del decorador wrapper
  • Implementar lógica de negocio para rutas OWN && ANY
  • Creación de una función para generar un usuario único
  • Recomendaciones de seguridad, docs

ROADMAP

                     
  Controller Método Ruta Info PUBLIC AUTHOR ADMIN AUTHOR POSSESION ADMIN POSSESION  
  USER GET /user Get Many YES YES YES ANY ANY  
  USER GET /user/1 Get One By ID YES YES YES ANY ANY  
  USER POST /user Create One NO YES YES OWN OWN  
  USER PUT /user/1 Edit One NO YES YES OWN ANY  
  USER DELETE /user/1 Delete One NO YES YES OWN ANY  
  USER POST /post Registration YES YES YES - -  
  POST GET /post Get Many YES YES YES ANY ANY  
  POST GET /post/1 Get One By ID YES YES YES ANY ANY  
  POST POST /post Create One NO YES YES OWN OWN  
  POST PUT /post/1 Edit One NO YES YES OWN ANY  
  POST DELETE /post/1 Delete One NO YES YES OWN ANY  
  AUTH POST /auth/login Login YES YES YES - -  
  AUTH GET /auth/profile Get me NO YES YES - -  
                     

Articles to read

Dominicode Live Coding 30-08-2020

30 Aug 20:30
Compare
Choose a tag to compare

Dominicode Live Coding 30-08-2020

Video: https://www.youtube.com/watch?v=kjr54SpV_eQ

  • Creación del repositorio
  • Clonar repositorio
    git clone -b livecoding/2 https://github.com/ruslanguns/nestjs-myblog.git myblog
  • Implementando la autenticación de usuarios

Requisitos:

Paquetes:

# LOCAL STRATEGY
- @nestjs/passport
- passport
- passport-local
- @types/passport-local (DEV)

# JWT STRATEGY
- @nestjs/jwt
- passport-jwt
- @types/passport-jwt (DEV)
  • Estructura de carpetas que usaremos.
  • Configuración básica siguiendo la Documentacion oficial
  • Inyectar PassportModule
  • Crear el provider localStrategy e implementarlo conjunto al servicio
  • Mi primer Custom Decorator para obtener el usuario
  • Inyectar JwtModule
  • Implementar el provider jwtStrategy e implementarlo
  • Método de Login JWT y endpoint profile
  • Error handling con JWT en el Guard
  • Configuración para el Swagger addBearerAuth()
  • Gestionar los Roles con el paquete nest-access-control

Requisitos:

Paquetes:

- nest-access-control
  • Modificación de UserModel para almacenar los roles
  • Creación del archivo app.roles.ts y utilizar builder
  • Inyectar el AccessControlModule en el AppModule
  • Creación del decorador wrapper
  • Implementar lógica de negocio para rutas OWN && ANY
  • Creación de una función para generar un usuario único
  • Recomendaciones de seguridad, docs

ROADMAP

                     
  Controller Método Ruta Info PUBLIC AUTHOR ADMIN AUTHOR POSSESION ADMIN POSSESION  
  USER GET /user Get Many YES YES YES ANY ANY  
  USER GET /user/1 Get One By ID YES YES YES ANY ANY  
  USER POST /user Create One NO YES YES OWN OWN  
  USER PUT /user/1 Edit One NO YES YES OWN ANY  
  USER DELETE /user/1 Delete One NO YES YES OWN ANY  
  USER POST /post Registration YES YES YES - -  
  POST GET /post Get Many YES YES YES ANY ANY  
  POST GET /post/1 Get One By ID YES YES YES ANY ANY  
  POST POST /post Create One NO YES YES OWN OWN  
  POST PUT /post/1 Edit One NO YES YES OWN ANY  
  POST DELETE /post/1 Delete One NO YES YES OWN ANY  
  AUTH POST /auth/login Login YES YES YES - -  
  AUTH GET /auth/profile Get me NO YES YES - -  
                     

Articles to read

Dominicode Live Coding 16-08-2020

24 Aug 08:44
Compare
Choose a tag to compare

Dominicode Live Coding 16-08-2020

Video: https://youtu.be/lTmGLgtgjdM

  • Creación del repositorio
  • Clonar repositorio
    git clone -b livecoding/1 https://github.com/ruslanguns/nestjs-myblog.git myblog
  • Creacion de CRUD de usuario

Requisitos:

Paquetes:

- bcryptjs
- @types/bcryptjs
  • Creación de estructura de usuario (archivos con el CLI)
  • Creando la configuración de la entidad de usuario
  • Configurando los DTOs de Usuario
  • Inyectando el repositorio en el provider de Usuario y creando el CRUD
  • Ajustar los nombres de camelCase a pascal_case para las propiedades de la DB
  • Encriptar contraseña y ocultándola en las peticiones: FUENTE
  • Configuración para usar los ENV con el paquete @nestjs/config

Requisitos:

Paquetes:

- @nestjs/config
  • Inyección de ConfigModule y configuración del archivo .env
  • Implementar variables de entorno con el TypeORM de forma asíncrona
  • Evitar los Magic Strings y hacer uso de constantes
  • No nos olvidemos de crear un SAMPLE ENV y excluirlo del GIT

Dominicode Live Coding 16-08-2020

17 Aug 14:52
Compare
Choose a tag to compare

Dominicode - Live coding session

Video: https://youtu.be/eL2tO9xPZLM