
Luis Márquez
Pregunta¿Por qué en auth.guard.ts accedemos a user$ directamente con this.authService.user$.pile pero en el resto de componentes como nav y profile nos suscribimos con this.authService.user$.subscribe() ?
Daniel Meza
Buena observación. Un
Guard
CanActivate
canActivate
Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree
Primero, esto devolvía:
const token = this._tokenService.getToken(); if (!token) { this._router.navigate(['/home']); return false; } return true;
Es correcto, devuelve un
boolean
En el caso que mencionas. Está devolviendo un
Observable
boolean
return this._authService.user$ .pipe( map(user => { if(!user) { this._router.navigate(['/home']); return false; } return true; }) )
Básicamente le está diciendo al guard.
Ten este observable de usuario, que si hay un usuario logueado, te lo mostrará. Pero, si hay alguno, devuelve un
, de lo contrario untrue
false
Esta lógica está dentro del
pipe
map
true
false