Я реализовал аутентификацию Firebase с помощью входа в Google (работает отлично).Но я не могу перейти к своему домашнему компоненту при успешном входе.Как я могу добиться этого?
Я ввел проверку, чтобы убедиться, что я вошел в систему, а затем перейдите к разделу Домой.Он обнаруживает, что я вошел в систему, но не переходит к моему домашнему компоненту.
Маршруты:
const routes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: 'login' },
{ path: 'login', component: LoginSignupComponent },
{ path: 'hc-home', component: HcHomeComponent, children: [
{ path: 'calender', component: CalenderComponent},
{ path: 'attendance', component: AttendanceComponent}
], canActivate: [CanActivateGuard]}
];
Служба аутентификации:
user$: Observable<User>;
constructor(private router: Router,
private afs: AngularFirestore,
private afAuth: AngularFireAuth) {
this.user$ = this.afAuth.authState.pipe(
switchMap(user => {
if (user) {
return this.afs.doc<User>(`users/${user.uid}`).valueChanges();
} else {
return of(null);
}
})
);
}
async googleSignIn() {
const provider = new auth.GoogleAuthProvider();
const credential = await this.afAuth.auth.signInWithPopup(provider);
return this.updateUserData(credential.user);
}
async signOut() {
await this.afAuth.auth.signOut();
return this.router.navigateByUrl('login');
}
private updateUserData(user) {
const userRef: AngularFirestoreDocument<User> = this.afs.doc(`users/${user.uid}`);
const data = {
displayName: user.displayName,
email: user.email,
photoURL: user.photoURL,
uid: user.uid
};
return userRef.set(data, { merge: true });
}
Авторизация:
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.auth.user$.pipe(
take(1),
map(user => !!user),
tap(loggedIn => {
console.log(loggedIn);
if (loggedIn === true) {
console.log('inside true function');
this.router.navigate(['/hc-home']);
}
if (!loggedIn) {
console.log('Access Denied');
this.router.navigateByUrl('login');
}
})
);
Мои ожидаемые результаты - перейти к дому после успешного входа в систему (что работает отлично), но по какой-то причине он обнаруживает, что я вошел в систему и аутентификацию firebase, и моя консоль подтверждает это, но я продолжаю оставаться на своемстраница авторизации.Нет никаких сообщений об ошибках.