Get the login user id

Asked

Viewed 702 times

1

I am doing a user management where any user can disable any user. But, the logged-in user cannot disable.

How I would get the logged in user id?

Component.:

export class AUsuariosComponent {

  model: any = {};
  userObj: User;
  users: User;
  users2: User;

  constructor(private userService: UserService, private router: Router) { }

  register() {
    this.users2 = new User();
    this.users2.email = this.users.email;
    this.users2.password = this.users.password;
    this.users2.user = this.users.user;
    this.userService.create(this.users2).subscribe(
      data => {
        this.refresh()
      },
      error => {
        console.log(Error)
      }
    )
  }

  refresh(): void {
    window.location.reload();
  }

  ngOnInit() {
    this.userService.getUsers().subscribe(
      response => {
        if (!response) {
          console.log(Error)
        } else {
          console.log(response)
          this.users = response
        }
      })
  }

  getUser(user: User) {
    this.userObj = user;
    this.userService.getUserById(user.id).subscribe(
      response => {
        if (!response) {
          console.log(Error)
        } else {
          this.users = response
        }
      })
  }

  updateUser(user: User) {
     this.userService.update(user).subscribe(
      data => {
        this.refresh()
      },
      error => {
        console.log(Error)
      }) 
  }

  desativarUsuario(user: User) {
    this.getUser(user);

    if (user.active == true){
      user.active = false;
      this.userService.update(user).subscribe(
        data => {
          this.refresh()
        },
        error => {
          console.log(Error)
        }) 
    } else if (user.active == false) {
      user.active = true;
      this.userService.update(user).subscribe(
        data => {
          this.refresh()
        },
        error => {
          console.log(Error)
        }) 
    }
  }

}

Component.html:

<div class="container" style="padding-top: 10px;">
    <form class="form-inline" (ngSubmit)="register()" #usuarioForm="ngForm" style="padding-top: 100px; padding-left: 90px;">
        <br>
        <br>

        <input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0" id="inlineFormInputName2" placeholder="Digite seu Nome Completo" required [(ngModel)]="users.user" #user="ngModel" name="user">

                <div class="input-group mb-2 mr-sm-2 mb-sm-0">
                    <input type="text" class="form-control" id="inlineFormInputGroupUsername2" placeholder="Digite seu E-mail" required [(ngModel)]="users.email" #email="ngModel" name="email">
                </div>

                <input type="password" class="form-control mb-2 mr-sm-2 mb-sm-0" id="inlineFormInputName2" placeholder="Crie uma Senha" required [(ngModel)]="users.password" #password="ngModel" name="password">

        <button type="submit" class="btn btn-primary" [disabled]="!usuarioForm.valid">Criar novo Usuario</button>
    </form>
    <br>
    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
            <table class="table table-striped table-hover">
                <thead>
                    <tr>
                        <th>Nome</th>
                        <th>Email</th>
                        <th>Trocar Senha</th>
                        <th>Desativar</th>
                    </tr>
                </thead>
                <tbody>
                    <tr *ngFor="let user of users" >
                        <td [ngClass]="user.active == false ? 'bg-gray' : 'bg-green'" >{{user.user}}</td>
                        <td [ngClass]="user.active == false ? 'bg-gray' : 'bg-green'" >{{user.email}}</td>
                        <td [ngClass]="user.active == false ? 'bg-gray' : 'bg-green'" >
                            <button class="btn btn-danger" data-toggle="modal" (click)="getUser(user)" data-target="#exampleModal">Recuperar Senha</button>
                        </td>
                        <td [ngClass]="user.active == false ? 'bg-gray' : 'bg-green'" >
                            <button [hidden]="user.active == false" class="btn btn-danger" (click)="desativarUsuario(user)" >Desativar</button>
                            <button [hidden]="user.active == true" class="btn btn-danger" (click)="desativarUsuario(user)" >Ativar</button>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>

<!-- modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="exampleModalLabel">Recuperar Senha</h5>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
        </div>
        <div class="modal-body">
            <input type="password" class="form-control mb-2 mr-sm-2 mb-sm-0" id="inlineFormInputName2" placeholder="Crie uma Senha"required>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
          <button type="button" class="btn btn-primary" (click)="updateUser(userObj)" >Salvar</button>
        </div>
      </div>
    </div>
  </div>

user module.:

export class User { 
  id: number
  user: string
  email: string
  password: string
  active: boolean

  public initializeWithJSON(json: any): User {
    this.id       = json.id;
    this.user     = json.user;
    this.email    = json.email;
    this.password = json.password;
    this.active   = json.active;

    return this
}

  public toJSON() {
    return {
      id        : this.id,
      user      : this.user,
      email     : this.email,
      password  : this.password,
      active    : this.active

    }
  }

}
  • There is a n ways to do this, and it will depend on how you log in, you store something in localStorage or sessionStorage? If yes, you can already take it from there, just use sessionStorage.id

  • It worked, thanks!

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.