Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

279
Views
Verifique las afirmaciones de roles y muestre los elementos si es verdadero

Estoy escribiendo una aplicación con angular en el frente + asp.net en el backend. Tengo 2 roles: usuario y administrador. Hay algunos botones en mi barra de navegación que quiero ocultar del rol de usuario. Mi función para verificar si el rol de usuario registrado actualmente es administrador:

 public isUserAdmin = (): boolean => { var token = localStorage.getItem("token"); const decodedToken = this._jwtHelper.decodeToken(token!); const role = decodedToken['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'] return role === 'Admin'; }

El código anterior está probado y funciona, actualmente lo estoy usando para guardia.

Mi barra de navegación html:

 <li class="nav-item"> <a class="nav-link" *ngIf="isUserAdmin" routerLink="manufacturers">Manufacturers</a> </li>

barra de navegación.ts:

 export class HeaderComponent implements OnInit { public isUserAdmin: boolean = false; ... constructor(private userService: UserService, private _router: Router) { this.userService.adminChanged .subscribe(res => this.isUserAdmin = res); }

Para obtener el trabajo de código anterior de navbar.ts, modifiqué userService:

 export class UserService { private _adminChangeSub = new ReplaySubject<boolean>(1); public adminChanged = this._adminChangeSub.asObservable(); constructor(private _http: HttpClient, private _envUrl: EnvironmentUrlService, private _jwtHelper: JwtHelperService) { } public isUserAdmin = (): boolean => { var token = localStorage.getItem("token"); const decodedToken = this._jwtHelper.decodeToken(token!); const role = decodedToken['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'] this._adminChangeSub.next(true); return role === 'Admin'; }

Pero simplemente no funciona. El elemento en la barra de navegación todavía está aquí incluso si inicio sesión en la cuenta de administrador. Además, cuando trato de console.log (this.isUserAdmin) en el constructor justo después de suscribirlo, devuelve falso. ¿Cómo puedo ocultar botones de la barra de navegación cuando el usuario no es administrador?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No hay necesidad de observables, suscripciones todo este arsenal. Simplemente usa esto:

 <li class="nav-item"> <a class="nav-link" *ngIf="userService.isUserAdmin" routerLink="manufacturers">Manufacturers</a> </li>

Y convertirlo en un captador en el servicio:

 get isUserAdmin(): boolean => { var token = localStorage.getItem("token"); const decodedToken = this._jwtHelper?.decodeToken(token!) || {}; const role = decodedToken['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'] return role === 'Admin'; }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!