From aa47d06307083e52736326b1b8b4972ee5fae37b Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Thu, 16 Apr 2020 16:02:01 +0200 Subject: [PATCH] FEAT #13670 TIME 2 fix js error http order in guard --- src/frontend/app/app.component.html | 14 ++-- src/frontend/app/app.component.ts | 16 ++-- .../app/basket/basket-home.component.html | 2 +- src/frontend/service/app.guard.ts | 83 +++++++++---------- 4 files changed, 57 insertions(+), 58 deletions(-) diff --git a/src/frontend/app/app.component.html b/src/frontend/app/app.component.html index 98a3f8cf97e..bc26ed8a456 100644 --- a/src/frontend/app/app.component.html +++ b/src/frontend/app/app.component.html @@ -1,16 +1,16 @@ <mat-sidenav-container class="maarch-container" autosize> - <mat-sidenav #snavLeft *ngIf="!headerService.hideSideBar" class="panel-left" [mode]="appService.getViewMode() ? 'over' : 'side'" - [fixedInViewport]="appService.getViewMode()" [opened]="appService.getViewMode() ? false : true" + <mat-sidenav #snavLeft class="panel-left" [mode]="appService.getViewMode() ? 'over' : 'side'" + [fixedInViewport]="appService.getViewMode()" [opened]="appService.getViewMode() || headerService.hideSideBar ? false : true" autoFocus="false" style="overflow-x:hidden;" [class.sideBarForm]="headerService.sideBarForm && !appService.getViewMode()" [class.sideBarFormMobile]="appService.getViewMode() && headerService.sideBarForm" [ngStyle]="{'width': appService.getViewMode() ? '80%' : '350px'}"> - <header-panel *ngIf="headerService.showhHeaderPanel"></header-panel> - <menu-shortcut *ngIf="headerService.showMenuShortcut"></menu-shortcut> - <menu-nav *ngIf="headerService.showMenuShortcut"></menu-nav> - <ng-container *ngIf="!headerService.sideBarAdmin"> + <header-panel *ngIf="headerService.showhHeaderPanel && !headerService.hideSideBar"></header-panel> + <menu-shortcut *ngIf="headerService.showMenuShortcut && !headerService.hideSideBar"></menu-shortcut> + <menu-nav *ngIf="headerService.showMenuShortcut && !headerService.hideSideBar"></menu-nav> + <ng-container *ngIf="!headerService.sideBarAdmin && !headerService.hideSideBar"> <basket-home #basketHome></basket-home> <mat-divider></mat-divider> <panel-folder #panelFolder></panel-folder> </ng-container> - <div id="adminMenu" style="display: contents;"></div> + <div id="adminMenu" *ngIf="!headerService.hideSideBar" style="display: contents;"></div> </mat-sidenav> <mat-sidenav-content> <router-outlet></router-outlet> diff --git a/src/frontend/app/app.component.ts b/src/frontend/app/app.component.ts index 5139e93a8bc..047c75dc8f6 100755 --- a/src/frontend/app/app.component.ts +++ b/src/frontend/app/app.component.ts @@ -6,6 +6,9 @@ import { HeaderService } from '../service/header.service'; import { AppService } from '../service/app.service'; import { MatSidenav } from '@angular/material/sidenav'; import { LangService } from '../service/app-lang.service'; +import { HttpClient } from '@angular/common/http'; +import { map } from 'rxjs/internal/operators/map'; +import { AuthService } from '../service/auth.service'; /** Custom options the configure the tooltip's default show/hide delays. */ export const myCustomTooltipDefaults: MatTooltipDefaultOptions = { @@ -25,14 +28,16 @@ export const myCustomTooltipDefaults: MatTooltipDefaultOptions = { }) export class AppComponent implements OnInit { - @ViewChild('snavLeft', { static: false }) snavLeft: MatSidenav; + @ViewChild('snavLeft', { static: true }) snavLeft: MatSidenav; constructor( + public http: HttpClient, public langService: LangService, iconReg: MatIconRegistry, sanitizer: DomSanitizer, public appService: AppService, - public headerService: HeaderService + public headerService: HeaderService, + private authService: AuthService ) { iconReg.addSvgIcon('maarchLogo', sanitizer.bypassSecurityTrustResourceUrl('../rest/images?image=onlyLogo')); @@ -43,13 +48,8 @@ export class AppComponent implements OnInit { } - ngOnInit(): void { - + async ngOnInit(): Promise<void> { this.headerService.hideSideBar = true; - setTimeout(() => { - this.headerService.sideNavLeft = this.snavLeft; - }, 200); - this.headerService.sideNavLeft = this.snavLeft; } } diff --git a/src/frontend/app/basket/basket-home.component.html b/src/frontend/app/basket/basket-home.component.html index 4dc9a627499..58a8f44b5ac 100755 --- a/src/frontend/app/basket/basket-home.component.html +++ b/src/frontend/app/basket/basket-home.component.html @@ -1,4 +1,4 @@ -<mat-expansion-panel #basketPanel class="basketList" [expanded]="!loading"> +<mat-expansion-panel #basketPanel class="basketList" expanded *ngIf="!loading"> <mat-expansion-panel-header> <mat-panel-title> <i class="fa fa-inbox panelIconMenu"></i> {{lang.myBaskets}} diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts index 5b74dd29b60..f0dd4d69984 100644 --- a/src/frontend/service/app.guard.ts +++ b/src/frontend/service/app.guard.ts @@ -3,7 +3,7 @@ import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, CanDeactivate } from '@angular/router'; import { HttpClient } from '@angular/common/http'; import { Observable, of } from 'rxjs'; -import { map, tap, catchError, exhaustMap } from 'rxjs/operators'; +import { map, tap, catchError, exhaustMap, filter } from 'rxjs/operators'; import { HeaderService } from './header.service'; import { ProcessComponent } from '../app/process/process.component'; import { PrivilegeService } from './privileges.service'; @@ -24,7 +24,7 @@ export class AppGuard implements CanActivate { private privilegeService: PrivilegeService ) { } - canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any { + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { console.log('guard'); this.headerService.resetSideNavSelection(); @@ -79,7 +79,8 @@ export class AppGuard implements CanActivate { if (this.headerService.user.status === 'ABS') { console.log('ABS!'); - return this.router.navigate(['/activate-user']); + this.router.navigate(['/activate-user']); + return of(false); } else { if (route.url.map((url: any) => url.path).filter((url: any) => ['signatureBook', 'content'].indexOf(url) > -1).length > 0) { this.headerService.hideSideBar = true; @@ -91,7 +92,7 @@ export class AppGuard implements CanActivate { } else { this.headerService.sideBarAdmin = false; } - return true; + return of(true); } } } else { @@ -105,47 +106,11 @@ export class AppGuard implements CanActivate { // this.authService.changeKey = data.changeKey; this.localStorage.setAppSession(data.instanceId); tokenInfo = this.authService.getToken(); + console.log(tokenInfo); if (tokenInfo !== null) { this.authService.setUrl(route.url.join('/')); - console.log('Token trouvé !'); - console.log('Récupération données user...'); - this.http.get('../rest/currentUser/profile') - .pipe( - map((dataUser: any) => { - this.headerService.user = { - id: dataUser.id, - status: data.status, - userId: dataUser.user_id, - firstname: dataUser.firstname, - lastname: dataUser.lastname, - entities: dataUser.entities, - groups: dataUser.groups, - preferences: dataUser.preferences, - privileges: dataUser.privileges[0] === 'ALL_PRIVILEGES' ? this.privilegeService.getAllPrivileges() : dataUser.privileges - }; - - this.headerService.nbResourcesFollowed = dataUser.nbFollowedResources; - this.privilegeService.resfreshUserShortcuts(); - if (this.headerService.user.status === 'ABS') { - console.log('ABS!'); - return this.router.navigate(['/activate-user']); - } else { - if (route.url.map((url: any) => url.path).filter((url: any) => ['signatureBook', 'content'].indexOf(url) > -1).length > 0) { - this.headerService.hideSideBar = true; - } else { - this.headerService.hideSideBar = false; - } - if (route.url.map((url: any) => url.path).filter((url: any) => url === 'administration').length > 0 || route.url.map((url: any) => url.path).filter((url: any) => url === 'profile').length > 0) { - this.headerService.sideBarAdmin = true; - } else { - this.headerService.sideBarAdmin = false; - } - return true; - } - }) - ).subscribe(); - return true; + return tokenInfo; } else { this.authService.setCachedUrl(route.url.join('/')); console.log('Aucun token trouvé ! Redirection sur login ...'); @@ -153,6 +118,40 @@ export class AppGuard implements CanActivate { return false; } }), + filter((info: any) => info !== null), + exhaustMap(() => this.http.get('../rest/currentUser/profile')), + map((dataUser: any) => { + this.headerService.user = { + id: dataUser.id, + status: dataUser.status, + userId: dataUser.user_id, + firstname: dataUser.firstname, + lastname: dataUser.lastname, + entities: dataUser.entities, + groups: dataUser.groups, + preferences: dataUser.preferences, + privileges: dataUser.privileges[0] === 'ALL_PRIVILEGES' ? this.privilegeService.getAllPrivileges() : dataUser.privileges + }; + + this.headerService.nbResourcesFollowed = dataUser.nbFollowedResources; + this.privilegeService.resfreshUserShortcuts(); + if (this.headerService.user.status === 'ABS') { + console.log('ABS!'); + return this.router.navigate(['/activate-user']); + } else { + if (route.url.map((url: any) => url.path).filter((url: any) => ['signatureBook', 'content'].indexOf(url) > -1).length > 0) { + this.headerService.hideSideBar = true; + } else { + this.headerService.hideSideBar = false; + } + if (route.url.map((url: any) => url.path).filter((url: any) => url === 'administration').length > 0 || route.url.map((url: any) => url.path).filter((url: any) => url === 'profile').length > 0) { + this.headerService.sideBarAdmin = true; + } else { + this.headerService.sideBarAdmin = false; + } + return true; + } + }), ); } -- GitLab