No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Ruta de login

10/22
Recursos

Aportes 8

Preguntas 8

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

En mongo puedes pasar un segundo parametro al find o findOne que te permite ocultar o mostrar los campos que te devuelve la consulta, para el caso seria:

userModel.find({ email: email }, { password: 0 } )

Buenas, el Login no me funcionaba

Estuve teniendo un 401 鈥渘ot allow鈥 al intentar loguearme y lo correg铆 de la siguiente manera.
El problema que ten铆a ven铆a de src/users/users.service.ts
En el c贸digo que venimos trabajando la conuslta por email est谩 de la siguiente forma:

findByEmail(email: string) {
    return this.userModel.findOne({ email }).exec();
  }

Mi problema era que nunca pod铆a loguearme, la razon es que la consulta a la BD es una promesa que no se resolv铆a antes de continuar con el flujo. Obteniendo siempre un user=null.
Desde entonces la tengo como una funci贸n as铆ncrona. Ej:

   async findByEmail(email: string) {
        const userEncontrado = await this.userModel.findOne({ email }).exec();
        return userEncontrado;
    }

De 茅sta forma resolv铆 el problema que ten铆a. Lo dejo ac谩 por si alguno tiene el mismo problema.
Saludos

No es mejor practica crear un LoginDto?

  login(@Body() loginDTO: LoginDto) {
    return this.authService.generateJWT(loginDTO);
  }

Para evitar enviar informaci贸n sensible en mi respuesta del controlador (passwords, etc) la mejor t茅cnica es serializar, defino desde mi entity que info no debo compartir asi evito tener que hacer modificaciones de mi respuesta en cada enpoint https://platzi.com/clases/2282-nestjs-typeorm/37326-serializar/

Esta Clase, al finalizar鈥alta a 鈥淐onfigurando mongo atlas鈥 y no a 鈥渃onectando passport con jwt鈥.

nest generate controller auth/controllers/auth

Error en la salida (req.user) Property 鈥渦ser鈥 doesn鈥檛 exist


Me salio este error cuando intente de ejecutar la aplicaci贸n, encontre que tenia que ver con el namespace, pero las soluciones estaban muy confusas, pero en la documentaci贸n hay otro metodo sin usar express.

import { Controller, Post, Request, UseGuards } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';

@Controller('auth')
export class AuthController {
  @UseGuards(AuthGuard('local'))
  @Post()
  login(@Request() req) {
    return req.user;
  }
}

En el controlador importamos de common el decorador Request y nuestra funci贸n login colocamos el decorador con el 鈥渞eq鈥 y funciona igual. 馃樃

馃憦