Bonjour,
je souhaite changer l'état d'une variable après s'être authentifié, voici mon code component.html qui est ma page d'accueil (elle est vide)
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <div id="brik_central"> <h1 *ngIf="isAdmin" style="background:red">ADMIN</h1> <router-outlet></router-outlet> </div>
dans un autre composant j'ai mis un formulaire d'authentification:
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <form #f="ngForm" (ngSubmit)="onLogin(f.value)"> <div class="erreur" *ngIf="mode==1"> <strong>erreur de formulaire</strong> </div> <mat-form-field> <input ngModel="" matInput placeholder="login" name="username" required> </mat-form-field> <mat-form-field> <input ngModel="" matInput placeholder="password" name="password" required> </mat-form-field> <br/> <button mat-raised-button type="submit" color="accent" >Login</button> <br/> <button mat-raised-button type="submit" color="primary" >Register</button> </form>
voici la méthode onLogin:
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 onLogin(user){// console.log("on login==="+JSON.stringify(user)); //verifier les champs remplis this.authService.login(user).subscribe(resp=>{ let jwt=resp.headers.get('Authorization'); this.authService.saveToken(jwt); this.router.navigateByUrl('/'); },err=>{ this.mode =1; }) }
Cette méthode récupère le jeton jwt, et change le router-outlet:
pour le moment mon but est simple, si j'ai un jwt en local storage je souhaite que isAdmin est à true.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 this.router.navigateByUrl('/');
Mais pour le moment isAdmin est toujours à false:
voici mon component.ts
Que faut t'il faire pour que isAdmin soit à true ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 export class AppComponent implements OnInit{ ngOnInit() { localStorage.getItem("jwt") ? console.log("jwt ok") :console.log(new Date()); this.isAdmin = false; } title = 'tdolist'; events: string[] = []; opened: boolean; isAdmin:boolean = false; constructor(private authService:AuthenticationService,private router:Router){ } deconnexion(){ this.authService.logOut(); this.router.navigateByUrl("/login"); } }
je dois utiliser le @input et @output pour y arriver ?
merci d'avance de vos réponses
Partager