Eu tenho a seguinte logica de autenticação
initAuthListener() {
this.afAuth.authState.subscribe(user => {
if (user) {
this.store.dispatch(new Auth.SetAuthenticated());
this.router.navigate(['/training']);
} else {
this.trainingServices.cancelSubscriptions();
this.store.dispatch(new Auth.SetUnauthenticated());
this.router.navigate(['/login']);
}
});
}
Como o app.component estava
ngOnInit(): void {
this.authService.initAuthListener();
}
Toda primeira chamada na pagina ia para /login, então eu passei a verificação para o training.component, que é onde precisa ter autorização(até agora somente ele).
É uma pratica ruim? Qual seria alternativa?
edit
Eu modifiquei da seguinte maneira, aparentemente está ok:
initAuthListener() {
this.afAuth.authState.subscribe(user => {
if (user) {
this.store.dispatch(new Auth.SetAuthenticated());
this.router.navigate(['/training']);
} else {
if((this.ROTAS_LIBERADAS.includes(this.router.url))){
this.trainingServices.cancelSubscriptions();
this.store.dispatch(new Auth.SetUnauthenticated());
}else{
this.trainingServices.cancelSubscriptions();
this.store.dispatch(new Auth.SetUnauthenticated());
this.router.navigate(['/login']);
}
}
});
}