Авторизация администратора с Angular 6 и Firebase - PullRequest
0 голосов
/ 29 сентября 2018

У меня проблема с реализацией авторизации администратора с использованием базы данных Firebase в реальном времени.У меня есть поле isAdmin, которое возвращает булево наблюдаемое в firebase, но оно не может прочитать значение из firebase, чтобы вернуть логическое значение.Указанный мною путь верен. Я дважды проверил его, но он все равно не будет работать.Пожалуйста, помогите !!

Мой Admin-Auth Guard:

export class AdminAuthGuard implements CanActivate {
  constructor(
               private authService:AuthService,
               private router:Router, 
               private db : AngularFireDatabase,
               private auth : AngularFireAuth
){}

uid = this.auth
.authState
.pipe(
  map(authState => {
    if(!authState){
      return null;
    } else {
      return authState.uid;
    }
  })
);

isAdmin= this.uid
.pipe(
  switchMap(userId => {
    if(!userId){
      return observableOf(false)
    } else {
      this.db
      .object('/admin/' + userId)
      .valueChanges()
    }
  })
);

canActivate(
            next: ActivatedRouteSnapshot,
            state: RouterStateSnapshot): Observable<boolean> | 
            Promise<boolean> | boolean {
    return this.isAdmin;
  }

}
...