Проблема с защитой маршрутов администратора с угловым 8 и firebase - PullRequest
0 голосов
/ 30 октября 2019

Я хотел защитить административные маршруты в своем веб-приложении. Я создал службу 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
}

Не могу понять, почему это такпроисходит. Спасибо за любую помощь.

...