Simplified unnecessary complex logic

This commit is contained in:
tanshu 2020-05-11 22:46:17 +05:30
parent 02fbd0984e
commit 5f3649990f
3 changed files with 15 additions and 19 deletions

View File

@ -64,18 +64,18 @@
<span class="fill-remaining-space"></span> <span class="fill-remaining-space"></span>
<mat-menu #userMenu="matMenu"> <mat-menu #userMenu="matMenu">
<a mat-menu-item routerLink="/logout">Logout {{nameObject | async}}</a> <a mat-menu-item (click)="logout()">Logout {{(auth.currentUser | async)?.name}}</a>
<a mat-menu-item routerLink="/users/{{nameObject | async}}">Change Password</a> <a mat-menu-item routerLink="/users/me">Change Password</a>
<a mat-menu-item routerLink="/users">Users</a> <a mat-menu-item routerLink="/users">Users</a>
<a mat-menu-item routerLink="/groups">Groups</a> <a mat-menu-item routerLink="/groups">Groups</a>
<a mat-menu-item routerLink="/clients">Clients</a> <a mat-menu-item routerLink="/clients">Clients</a>
<a mat-menu-item routerLink="/settings">Settings</a> <a mat-menu-item routerLink="/settings">Settings</a>
</mat-menu> </mat-menu>
<button mat-button [matMenuTriggerFor]="userMenu" *ngIf="nameObject | async as name"> <button mat-button [matMenuTriggerFor]="userMenu" *ngIf="(auth.currentUser | async)?.name as name">
<mat-icon>account_box</mat-icon> <mat-icon>account_box</mat-icon>
{{name}} {{name}}
</button> </button>
<a mat-button routerLink="/login" *ngIf="!(nameObject | async)"> <a mat-button routerLink="/login" *ngIf="!(auth.currentUser | async)">
<mat-icon>account_box</mat-icon> <mat-icon>account_box</mat-icon>
Login</a> Login</a>
</mat-toolbar> </mat-toolbar>

View File

@ -1,25 +1,19 @@
import {Component, OnInit} from '@angular/core'; import {Component} from '@angular/core';
import {AuthService} from '../../auth/auth.service'; import {AuthService} from '../../auth/auth.service';
import {Subject} from 'rxjs/internal/Subject'; import {Router} from '@angular/router';
@Component({ @Component({
selector: 'app-nav-bar', selector: 'app-nav-bar',
templateUrl: './nav-bar.component.html', templateUrl: './nav-bar.component.html',
styleUrls: ['./nav-bar.component.css'] styleUrls: ['./nav-bar.component.css']
}) })
export class NavBarComponent implements OnInit { export class NavBarComponent {
public nameObject = new Subject<string>();
constructor(private auth: AuthService) { constructor(private router: Router, private auth: AuthService) {
} }
ngOnInit() { logout() {
this.auth.userObservable.subscribe((user) => { this.auth.logout();
if (user.isAuthenticated) { this.router.navigate(['/']);
this.nameObject.next(user.name);
} else {
this.nameObject.next(null);
}
});
} }
} }

View File

@ -3,9 +3,11 @@ export class User {
name: string; name: string;
password: string; password: string;
lockedOut: boolean; lockedOut: boolean;
groups: UserGroup[]; roles?: UserGroup[];
perms: string[]; perms: string[];
isAuthenticated: boolean; isAuthenticated: boolean;
access_token?: string;
exp?: bigint;
public constructor(init?: Partial<User>) { public constructor(init?: Partial<User>) {
Object.assign(this, init); Object.assign(this, init);