Аутентификация Angular 8: перенаправление не работает после подключения от имени администратора - PullRequest
0 голосов
/ 30 сентября 2019

Я работаю над задачей авторизации в 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;

      }));
  }
...