Я пытаюсь реализовать охрану, используя userService
, чтобы получить необходимую информацию. В настоящее время UserService
выглядит следующим образом:
getUserDetails(): Observable<User> {
this.requestUrl = `${configs.bgwssApi}v1/user/details`;
return this.http.get<User>(this.requestUrl).pipe(catchError(this.handleError));
}
isBoardMember(): Observable<boolean> {
this.getUserDetails().pipe(
map(data => {
if (data.userRole !== 'MEMBER') {
return of(false);
}
console.log(data); //Not printed
})
);
return of(true);
}
getUserDetails работает нормально, он возвращает необходимую информацию. Но isBoardMember
всегда возвращает true, так как я заметил, что он даже не проверяет userRole
. В чем может быть проблема здесь? Как исправить isBoardMember
, чтобы он возвращал правильное значение, потому что позже мой охранник выполняет такую проверку, которая работает нормально, кстати:
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> {
return this.userService.isBoardMember().pipe(
map(data => {
if (data === false) {
this.router.navigate(['main']);
return false;
}
return true;
})
);
}