From 1dea55977e192edfb199df72389188f45f9070b6 Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Thu, 9 Apr 2020 18:23:47 +0200
Subject: [PATCH] FEAT #13670 TIME 0:40 add redirect to activate-user

---
 src/frontend/app/activate-user.component.html |   2 +-
 src/frontend/app/activate-user.component.ts   |   9 +-
 src/frontend/service/app.guard.ts             | 102 +++++++++++-------
 src/frontend/service/header.service.ts        |   3 +-
 4 files changed, 72 insertions(+), 44 deletions(-)

diff --git a/src/frontend/app/activate-user.component.html b/src/frontend/app/activate-user.component.html
index 198f32f71cc..4c4d995b67a 100755
--- a/src/frontend/app/activate-user.component.html
+++ b/src/frontend/app/activate-user.component.html
@@ -1,7 +1,7 @@
 <div class="admin-container" [class.admin-is-mobile]="appService.getViewMode()" style="margin-top: -63px;">
     <mat-toolbar color="primary" class="admin-toolbar">
         <button mat-button>
-            <mat-icon class="maarchLogo" [svgIcon]="appService.getViewMode() ? 'maarchLogoOnly' : 'maarchLogo'"></mat-icon>
+            <mat-icon class="maarchLogoWhite" [svgIcon]="appService.getViewMode() ? 'maarchLogoOnly' : 'maarchLogo'"></mat-icon>
         </button>
         <h1 class="admin-toolbar-title text-center" >{{lang.missingAdvertTitle}}</h1>
         <span style="flex: 1 1 auto;"></span>
diff --git a/src/frontend/app/activate-user.component.ts b/src/frontend/app/activate-user.component.ts
index 9f43ab30e85..7cb88ccd9ee 100755
--- a/src/frontend/app/activate-user.component.ts
+++ b/src/frontend/app/activate-user.component.ts
@@ -53,8 +53,8 @@ export class ActivateUserComponent implements OnInit {
 
     ngOnInit(): void {
         this.loading = true;
-
-        this.http.get('../rest/currentUser/profile')
+        if (this.headerService.user.status === 'ABS') {
+            this.http.get('../rest/currentUser/profile')
             .subscribe((data: any) => {
                 this.user = data;
 
@@ -68,6 +68,9 @@ export class ActivateUserComponent implements OnInit {
                 });
                 this.loading = false;
             });
+        } else {
+            this.router.navigate(['/home']);
+        }
     }
 
     showActions(basket: any) {
@@ -83,7 +86,7 @@ export class ActivateUserComponent implements OnInit {
 
         this.http.put('../rest/users/' + this.headerService.user.id + '/status', { 'status': 'OK' })
             .subscribe(() => {
-
+                this.headerService.user.status = 'OK';
                 let basketsRedirectedIds: any = '';
 
                 this.user.redirectedBaskets.forEach((elem: any) => {
diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts
index 6e5e572b524..0c36fd88c83 100644
--- a/src/frontend/service/app.guard.ts
+++ b/src/frontend/service/app.guard.ts
@@ -24,29 +24,23 @@ export class AppGuard implements CanActivate {
         private privilegeService: PrivilegeService
     ) { }
 
-    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
+    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {
+        console.log('guard');
+        
         this.headerService.resetSideNavSelection();
 
-        if (route.url.map((url: any) => url.path).filter((url: any) => url === 'signatureBook').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;
-        }
-
         let tokenInfo = this.authService.getToken();
 
         if (tokenInfo !== null) {
+            console.log('Token trouvé !');
             if (this.headerService.user.id === undefined) {
+                console.log('Récupération données user...');
                 return this.http.get('../rest/currentUser/profile')
                     .pipe(
                         map((data: any) => {
                             this.headerService.user = {
                                 id: data.id,
+                                status: data.status,
                                 userId: data.user_id,
                                 firstname: data.firstname,
                                 lastname: data.lastname,
@@ -58,13 +52,49 @@ export class AppGuard implements CanActivate {
 
                             this.headerService.nbResourcesFollowed = data.nbFollowedResources;
                             this.privilegeService.resfreshUserShortcuts();
-                            return true;
+
+                            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) => url === 'signatureBook').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;
+                            }
+
                         })
                     );
             } else {
-                return true;
+                console.log('Données user trouvé !');
+
+                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) => url === 'signatureBook').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;
+                }
             }
         } else {
+            console.log('Aucun token trouvé ! Recupération du token ...');
+
             return this.http.get('../rest/authenticationInformations')
                 .pipe(
                     map((data: any) => {
@@ -74,11 +104,14 @@ export class AppGuard implements CanActivate {
                         tokenInfo = this.authService.getToken();
 
                         if (tokenInfo !== null) {
+                            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,
@@ -90,11 +123,27 @@ export class AppGuard implements CanActivate {
 
                                         this.headerService.nbResourcesFollowed = dataUser.nbFollowedResources;
                                         this.privilegeService.resfreshUserShortcuts();
-                                        return true;
+                                        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) => url === 'signatureBook').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;
                         } else {
+                            console.log('Aucun token trouvé ! Redirection sur login ...');
                             this.authService.logout();
                             return false;
                         }
@@ -102,29 +151,6 @@ export class AppGuard implements CanActivate {
                 );
 
         }
-        if (this.headerService.user.id === undefined) {
-            return this.http.get('../rest/currentUser/profile')
-                .pipe(
-                    map((data: any) => {
-                        this.headerService.user = {
-                            id: data.id,
-                            userId: data.user_id,
-                            firstname: data.firstname,
-                            lastname: data.lastname,
-                            entities: data.entities,
-                            groups: data.groups,
-                            preferences: data.preferences,
-                            privileges: data.privileges[0] === 'ALL_PRIVILEGES' ? this.privilegeService.getAllPrivileges() : data.privileges
-                        };
-
-                        this.headerService.nbResourcesFollowed = data.nbFollowedResources;
-                        this.privilegeService.resfreshUserShortcuts();
-                        return true;
-                    })
-                );
-        } else {
-            return true;
-        }
     }
 }
 
diff --git a/src/frontend/service/header.service.ts b/src/frontend/service/header.service.ts
index 96904058b41..20c6a60c1fb 100755
--- a/src/frontend/service/header.service.ts
+++ b/src/frontend/service/header.service.ts
@@ -114,11 +114,10 @@ export class HeaderService {
             this.showMenuNav = true;
             this.sideBarAdmin = false;
             this.sideBarButton = null;
-            this.hideSideBar = false;
+            this.hideSideBar = true;
     }
 
     injectInSideBarLeft(template: TemplateRef<any>, viewContainerRef: ViewContainerRef, id: string = 'adminMenu', mode: string = '') {
-        
 
         if (mode === 'form') {
             this.sideBarForm = true;
-- 
GitLab