Я создаю приложение, используя Firebase Auth (AngularFire) с Angular 6. У меня также есть служба MongoDB для Role-Base-Access (RBA)
Мне нужно сделать 3 вещи, чтобы определить, может ли пользователь получить доступ к URL-пути:
- Прослушивание Firebase authState Observable для текущего пользователя
- Получить его последний идентификатор токена
- Проверьте MongoDB, разрешен ли пользователю доступ к URL
Когда все 3 пройдут, он должен вернуть true
Я немного изучил Observables, но все еще чувствую себя сбитым с толку, тем более что я использую rxjs 6, и многие ссылки до сих пор ссылаются на-5.5
Это моя функция canActivate прямо сейчас:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot)
{
return this.authService.user$.pipe(map (user => {
//user.getIdToken() returns a Promise so I wrap it in an Observable
return from(user.getIdToken());
})).pipe(map( tokenValue => {
//tokenValue is an Observable here
this.mongoDBService.validate(tokenValue, state.url);
}));
}
Я ожидал, что второй «канал» прослушает и получит результат от (user.getIdToken ())
Разве не так это должно работать? Если нет, то может кто-нибудь подсказать мне, как соединить эти 2 наблюдаемые вместе?
Спасибо