Preciso que seja feita uma verificação ao abrir uma nova aba e que verifique se o cliente está logado.
tenho a seguinte requisição
public isLoggedBack() {
const uri = '/usuario/v1/isLogado/';
let res = this.httpClient.get<LoginResponse>(API_URL + uri, {
headers: {},
params: {},
observe: 'response',
withCredentials: true
});
return res.map(r => r.body);
}
serve para ver se o usuário está logado
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot) {
if (this.authService.isLoggedIn()) {
return true;
}else {
this.authService.isLoggedBack().subscribe(
data => {
let loginResponse = data;
this.authService.login(loginResponse);
return true;
}
);
this.router.navigate(['/auth/login']);
}
return false;
}
mas no primeiro momento a requisição fica com o status de "pending" por ser assíncrona, e a requisição só é realmente feita após ele fazer o redirecionamento para a tela de login novamente, existe alguma forma de fazer com que não redirecione até realmente a resposta do servidor chegar?
ou se existe alguma outra forma de fazer com que eu abra uma nova aba e ele saiba que eu ainda estou logado.
consegui até fazer alguma coisa mas, tive que guardar a url e após isso fazer um navigate para ela ficando algo tipo assim
this.authService.isLoggedBack().subscribe(
data => {
let loginResponse = data;
this.authService.login(loginResponse);
this.router.navigate([this.route]);
return true;
}
);