Я работаю над задачей авторизации в angular 8 проектах с бэкэндом Symfony. Аутентификация и перенаправление зависят от роли, возвращаемой API. при вводе моих учетных данных в качестве супер-администратора перенаправление не работает и URL остается на странице входа!
компонент аутентификации
Submit(email: string, password: string) {
if (this.loginForm.invalid) {
return;
}
this.loading = true;
this.authService.login(email, password)
.pipe(first())
.subscribe(
data => {
this.tokenParse = JSON.parse(localStorage.getItem('currentUser'));
this.decoded = jwt_decode(this.tokenParse);
var role = this.decoded.roles.findIndex(x => x == "ROLE_SUPER_ADMIN")
if (role != -1) {
this.toastr.success("Connecté en tant que Administrateur")
this.router.navigateByUrl('/admin');
}
else {
this.toastr.success("connecté avec succès")
this.router.navigateByUrl("/");
}
},
(error: HttpErrorResponse) => {
this.show = true
let errorPayload = JSON.parse(error.message);
//ToDo: apply your handling logic e.g.:
//console.log(errorPayload[0].description
console.log(error.error);
this.toastr.error(error.error)
this.loading = false;
});
}
сервис аутентификации
login(username: string, password: string) {
return this.http.post<any>((`${environment.baseUrl}/auth/login`), { username, password })
.pipe(map(user => {
if (user && user.token) {
this.saveToken(user.token);
setTimeout(() => this.logout(), 864000000)
}
return user.token;
}));
}