Как я могу получить текущий вошедших в систему пользователей уникальный идентификатор? - PullRequest
0 голосов
/ 17 июня 2019

Чтобы можно было сделать так, чтобы администратор имел возможность удалять других администраторов, а не их самих, мне нужно иметь возможность хранить идентификатор текущего вошедшего в систему пользователя.Ниже приведен формат кнопки, которая удаляет права администратора у проверенных администраторов.

<td *ngIf="user.userRoleID == 1 && user.userID != loggedUserID" style="padding-left: 10px;">
 <button style="width: 100%;" (click)="removeAdmin(user.userID)" class="btn btn-warning btn-sm">Remove
   admin
 </button>
</td>

Может кто-нибудь объяснить, как мне получить часть кода «loggedUserID»?Я использую пружинную загрузку и угловой для создания этого приложения.

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

В вашем компоненте вам нужно определить эту переменную 'loggedUserID'.

Я предоставляю некоторый пример кода, например, как вы можете соединить все, но вы можете свободно использовать свои собственные классы / методы компонента/ services.

UserComponent

     export class UserComponent {

      loggedUserID: string;


    constructor(private userService: UserService ) { }

      getUser() {
      this.userService.getUserDetails().subscribe(user => {
          this.loggedUserID = user.id;
        });
}

UserService

 @Injectable({
      providedIn: 'root',
    })
    export class UserService {


      public getUserDetails(): Observable<User> {

        return this.http.get<User>(url)
                  .pipe(map(data => {
             return data.body;
            }));

      }

}

Модель пользователя

export class User {
id: string,
name: string,
email: string

}

0 голосов
/ 17 июня 2019

Самый простой способ сделать это - воспользоваться услугой:

@Injectable({
  providedIn: 'root',
})
export class AuthenticationService {
  private currentUser: User; // Here, store the full user or the user id, depending your needs.

  constructor() {
    // [...]
  }

  public login(): void {
    // [...] your call to the API and others...
    this.currentUser = data.user; // Assuming your API returns the user after authentication.
  }

  public getCurrentUser(): User {
    return this.user; // Here you get the current user.
  }

  // [...] other methods
}

Затем вы можете ссылаться на это в любом компоненте, используя внедрение зависимостей:

// [...]
export class YourComponent implements OnInit {
  // [...]

  constructor(private authService: AuthenticationService) {
  }

  ngOnInit() {
    this.loggedUserID = this.authService.getCurrentUser().id; // set the loggedUserID.
  }
}

Обратите внимание, что приведенный ниже код работает, потому что эта служба является одиночной:

Существует два способа сделать сервис одноязычным в Angular:

  • Объявление корня для значения свойства @Injectable () предоставленного.
  • Включить службу в модуль AppModule или в модуль, который импортируется только модулем AppModule
...