我有一个角度应用程序和一个路由守卫。
如果用户在domain.com/login
登录时结束,我想将他们转发到另一条路线。
但是,一个用户帐户在 firestore ( admin: true
) 中具有“admin”属性。登录后,我会检查 login.component.ts 以查看用户帐户上的 Firestore 节点是否存在。如果是这样,我会将它们转发到管理面板。如果没有,那么它表明它是一个客户端传入并将它们重定向到另一个组件。
但是,我目前遇到的问题是,如果用户在登录时最终出现在登录屏幕上,我不确定如何将用户重定向到适当的组件。到目前为止,下面是我的后卫。如您所见,路由器导航中有一个问号,因为我不确定如何确定它是否是管理员。
export class LoginGuardService implements CanActivate {
constructor(
private router: Router,
private auth: AngularFireAuth
) { }
canActivate(): Observable<boolean> {
return this.auth.authState.pipe(
map(authState => {
if (authState) {this.router.navigate(['/?']);}
return !authState;
}),
take(1)
)
}
}