Я пытаюсь реализовать метод isLoggedIn с Firebase в моем приложении Angular 6, и у меня возникают проблемы, потому что пользователь firebase является объектом «подписки», и я пытаюсь использовать его как обычный метод isLoggedIn ().
Вот что у меня есть на данный момент:
export class AngularFireAuthService {
private firebaseUser$: Observable<firebase.User>;
constructor(private angularFireAuth: AngularFireAuth) {
this.firebaseUser$ = angularFireAuth.authState;
}
getFirebaseUser() {
return this.firebaseUser$;
}
register(user: any) {
return this.angularFireAuth.auth.createUserWithEmailAndPassword(user.email, user.password)
}
login(user: any) {
return this.angularFireAuth.auth.signInWithEmailAndPassword(user.email, user.password)
}
logout() {
return this.angularFireAuth.auth.signOut();
}
resetPassword(email: string) {
return this.angularFireAuth.auth.sendPasswordResetEmail(email);
}
isLoggedIn() {
//not sure how to do this.
//I was trying to do something like this:
// this.firebaseUser$.subscribe((user) => {
// if (user) {
// return true;
// } else {
// return false;
// }
// });
}
}
Есть ли способ реализовать метод isLoggedIn, чтобы я мог просто вызвать его в любом из моих компонентов? Я пробовал погуглить, и похоже, что большинство людей делают это, подписываясь на объект firebaseUser $, и если результат не равен нулю, тогда предположим, что пользователь вошел в систему. Но мне было интересно, могу ли я обойтись без подписаться на каждый из моих компонентов и вместо этого просто вызвать метод isLoggedIn
, который просто вернет true или false, например:
if (this.angularFireAugthService.isLoggedIn()) {
//do something
}