Я хотел защитить административные маршруты в своем веб-приложении. Я создал службу admin-auth-guard и использовал canActivate () (у меня были проблемы, но я исправил это со ссылкой на предыдущий поток). Теперь во время компиляции не появлялось никаких ошибок, но в реальном времени консоль выдавала некоторые сообщения об ошибках: Сообщение об ошибке консоли Вот мой код службы защиты администратора:
export class AdminAuthGuardService {
constructor(private auth: AuthService, private userService: UserService) { }
canActivate():Observable<boolean>{
return this.auth.user$
.pipe(switchMap( user => {
return this.userService.get(user.uid).valueChanges()}))
.pipe(map(appUser=>appUser.isAdmin));
}
}
МойСервисный код авторизации:
export class AuthService {
user$:Observable<firebase.User>
constructor(private afAuth : AngularFireAuth ,private route: ActivatedRoute) {
this.user$=afAuth.authState;
}
login(){
let returnUrl=this.route.snapshot.queryParamMap.get('returnUrl') || '/'
localStorage.setItem('returnUrl',returnUrl);
this.afAuth.auth.signInWithRedirect(new firebase.auth.GoogleAuthProvider());
}
logout(){
this.afAuth.auth.signOut();
}
}
Мой сервисный код пользователя:
export class UserService {
constructor(private db: AngularFireDatabase) { }
save(user:firebase.User){
this.db.object('/users/'+user.uid).set({
name: user.displayName,
email: user.email
});
}
get (uid:string) : AngularFireObject<appUser>{
return this.db.object('/users'+uid);
}
}
Мой пользовательский модуль приложения:
export interface appUser{
name: string;
email: string;
isAdmin: boolean
}
Не могу понять, почему это такпроисходит. Спасибо за любую помощь.