Служба аутентификации не работает в проекте Angular

Я использую Angular и Moralis для создания торговой площадки NFT.

Пока что я использую этот фрагмент кода в своем компоненте входа для входа в систему пользователя с использованием его расширения метамаски:

      import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { AuthService } from '@core/services';
import { environment } from '@environments/environment';
import { Moralis } from 'moralis';

export type User = Moralis.User<Moralis.Attributes>;

@Component({
  selector: 'signin-page',
  templateUrl: './signin-page.component.html',
  styleUrls: ['./signin-page.component.scss'],
})
export class SigninPage implements OnInit {
  user?: User;

  constructor(private router: Router, private authService: AuthService) {}

  ngOnInit(): void {
    Moralis.start({
      appId: environment.moralis.appId,
      serverUrl: environment.moralis.serverUrl,
    })
      .then(() => console.info('Moralis has been initialised.'))
      .finally(() => {
        this.setLoggedInUser(Moralis.User.current());
        this.authService.isAuthorized = true;
      });
  }

  login(provider: 'metamask' | 'walletconnect' = 'metamask') {
    (provider === 'metamask'
      ? Moralis.Web3.authenticate()
      : Moralis.Web3.authenticate({ provider })
    )
      .then((loggedInUser) => {
        this.setLoggedInUser(loggedInUser);
        this.router.navigate(['dashboard']);
      })
      .catch((e) => console.error(`Moralis '${provider}' login error:`, e));
  }

  private setLoggedInUser(loggedInUser?: User) {
    this.user = loggedInUser;
    this.authService.changeUser(this.user);
    this.authService.isAuthorized = true;
    console.info('Loggedin user:', loggedInUser);
  }
}

и, как вы можете видеть, я хочу установить значение true в моей службе аутентификации, чтобы я мог использовать его во всем приложении, но он не работает и isAuthorized остается ложным на протяжении всего процесса входа в систему.

вот мой сервисный код авторизации:

      import { Injectable } from '@angular/core';
import { Moralis } from 'moralis';

export type User = Moralis.User<Moralis.Attributes>;

@Injectable({
  providedIn: 'root',
})
export class AuthService {
  user?: User;

  private _isUserAuthorized: boolean = false;

  constructor() {}

  ngOnInit() {}

  changeUser(user?: User) {
    this.user = user;
    this.isAuthorized = true;
  }

  get isAuthorized(): boolean {
    return this._isUserAuthorized;
  }

  set isAuthorized(value: boolean) {
    this._isUserAuthorized = value;
  }
}

0 ответов

Другие вопросы по тегам