From d749db62f62f64e082add15a0761c5b44300364f Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Thu, 4 Jul 2019 13:06:00 +0200 Subject: [PATCH] FEAT #10938 TIME 1:20 add guard for save route v2 if v1 location --- apps/maarch_entreprise/index.php | 10 +- .../indexing_searching/details.php | 2 +- apps/maarch_entreprise/login.php | 4 + apps/maarch_entreprise/template/header.html | 2 +- .../administration-routing.module.ts | 97 ++++++++++--------- src/frontend/app/app-routing.module.ts | 17 ++-- src/frontend/service/app.guard.ts | 20 ++++ 7 files changed, 93 insertions(+), 59 deletions(-) create mode 100644 src/frontend/service/app.guard.ts diff --git a/apps/maarch_entreprise/index.php b/apps/maarch_entreprise/index.php index da9b67b4691..d40c24938b5 100755 --- a/apps/maarch_entreprise/index.php +++ b/apps/maarch_entreprise/index.php @@ -378,6 +378,14 @@ if (!empty($_REQUEST['page']) && empty($_REQUEST['triggerAngular'])) { } elseif ($cookie['userId'] == 'superadmin' && !empty($_REQUEST['administration'])) { ?><script>triggerAngular('#/administration')</script><?php } elseif (empty($_REQUEST['page'])) { - ?><script>triggerAngular('#/home')</script><?php + ?> + <script> + var route = '#/home'; + if(localStorage.getItem('PreviousV2Route') != null) { + route = '#' + localStorage.getItem('PreviousV2Route'); + } + triggerAngular(route); + </script> + <?php } } diff --git a/apps/maarch_entreprise/indexing_searching/details.php b/apps/maarch_entreprise/indexing_searching/details.php index 69517039f02..5e0c9d09eb8 100755 --- a/apps/maarch_entreprise/indexing_searching/details.php +++ b/apps/maarch_entreprise/indexing_searching/details.php @@ -382,7 +382,7 @@ if ($stmt->rowCount() == 0) { <?php if (!isset($_POST['up_res_id']) || !$_POST['up_res_id']) { if ($_SESSION['indexation'] == false) { - echo '<a href="#" onclick="$j(\'#ariane a:nth-last-child(3)\')[0].click();"><i class="fa fa-arrow-circle-left fa-2x" title="'._BACK.'"></i></a>'; + echo '<a href="javascript:history.go(-1)"><i class="fa fa-arrow-circle-left fa-2x" title="'._BACK.'"></i></a>'; } } ?> </p> diff --git a/apps/maarch_entreprise/login.php b/apps/maarch_entreprise/login.php index d798a92c9e0..a040116ee4a 100755 --- a/apps/maarch_entreprise/login.php +++ b/apps/maarch_entreprise/login.php @@ -21,6 +21,10 @@ if (isset($_GET['target_page']) && trim($_GET['target_page']) != '') { $serverPath = ''; +echo '<script>'; +echo "localStorage.removeItem('PreviousV2Route');"; +echo '</script>'; + if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN' && strtoupper(substr(PHP_OS, 0, 3)) != 'WINNT' ) { diff --git a/apps/maarch_entreprise/template/header.html b/apps/maarch_entreprise/template/header.html index f00c93160b8..9f1b2252b97 100755 --- a/apps/maarch_entreprise/template/header.html +++ b/apps/maarch_entreprise/template/header.html @@ -1,7 +1,7 @@ <div id="header"> <div id="nav" style="margin-left: 0px;"> <div style="display:flex;padding-left: 20px;padding-right: 20px;height:100%;"> - <a href="index.php"> + <a href="index.php" onclick="localStorage.setItem('PreviousV2Route', '/home');"> <div style="background: url(static.php?filename=logo_white.svg) #135F7F;background-size: 80%;background-position: center;background-repeat: no-repeat;width: 140px;height: 100%;"> </div> </a> diff --git a/src/frontend/app/administration/administration-routing.module.ts b/src/frontend/app/administration/administration-routing.module.ts index 1d78e688b68..0cc62b6a150 100755 --- a/src/frontend/app/administration/administration-routing.module.ts +++ b/src/frontend/app/administration/administration-routing.module.ts @@ -37,58 +37,59 @@ import { SecuritiesAdministrationComponent } from './security/securit import { SendmailAdministrationComponent } from './sendmail/sendmail-administration.component'; import { ShippingsAdministrationComponent } from './shipping/shippings-administration.component'; import { ShippingAdministrationComponent } from './shipping/shipping-administration.component'; +import { AppGuard } from '../../service/app.guard'; @NgModule({ imports: [ RouterModule.forChild([ - { path: 'administration', component: AdministrationComponent }, - { path: 'administration/users', component: UsersAdministrationComponent }, - { path: 'administration/users/new', component: UserAdministrationComponent }, - { path: 'administration/users/:id', component: UserAdministrationComponent }, - { path: 'administration/groups', component: GroupsAdministrationComponent }, - { path: 'administration/groups/new', component: GroupAdministrationComponent }, - { path: 'administration/groups/:id', component: GroupAdministrationComponent }, - { path: 'administration/baskets', component: BasketsAdministrationComponent }, - { path: 'administration/baskets/new', component: BasketAdministrationComponent }, - { path: 'administration/baskets/:id', component: BasketAdministrationComponent }, - { path: 'administration/doctypes', component: DoctypesAdministrationComponent }, - { path: 'administration/diffusionModels', component: DiffusionModelsAdministrationComponent }, - { path: 'administration/diffusionModels/new', component: DiffusionModelAdministrationComponent }, - { path: 'administration/diffusionModels/:id', component: DiffusionModelAdministrationComponent }, - { path: 'administration/entities', component: EntitiesAdministrationComponent }, - { path: 'administration/statuses', component: StatusesAdministrationComponent }, - { path: 'administration/statuses/new', component: StatusAdministrationComponent }, - { path: 'administration/statuses/:identifier', component: StatusAdministrationComponent }, - { path: 'administration/parameters', component: ParametersAdministrationComponent }, - { path: 'administration/parameters/new', component: ParameterAdministrationComponent }, - { path: 'administration/parameters/:id', component: ParameterAdministrationComponent }, - { path: 'administration/reports', component : ReportsAdministrationComponent}, - { path: 'administration/priorities', component : PrioritiesAdministrationComponent }, - { path: 'administration/priorities/new', component : PriorityAdministrationComponent }, - { path: 'administration/priorities/:id', component : PriorityAdministrationComponent }, - { path: 'administration/actions', component: ActionsAdministrationComponent }, - { path: 'administration/actions/new', component: ActionAdministrationComponent }, - { path: 'administration/actions/:id', component: ActionAdministrationComponent }, - { path: 'administration/notifications', component: NotificationsAdministrationComponent }, - { path: 'administration/notifications/new', component: NotificationAdministrationComponent }, - { path: 'administration/notifications/:identifier', component: NotificationAdministrationComponent }, - { path: 'administration/history', component: HistoryAdministrationComponent }, - { path: 'administration/update-status', component: UpdateStatusAdministrationComponent }, - { path: 'administration/contacts-groups', component: ContactsGroupsAdministrationComponent }, - { path: 'administration/contacts-groups/new', component: ContactsGroupAdministrationComponent }, - { path: 'administration/contacts-groups/:id', component: ContactsGroupAdministrationComponent }, - { path: 'administration/contacts-filling', component: ContactsFillingAdministrationComponent }, - { path: 'administration/versions-update', component: VersionsUpdateAdministrationComponent }, - { path: 'administration/docservers', component: DocserversAdministrationComponent }, - { path: 'administration/docservers/new', component: DocserverAdministrationComponent }, - { path: 'administration/templates', component: TemplatesAdministrationComponent }, - { path: 'administration/templates/new', component: TemplateAdministrationComponent }, - { path: 'administration/templates/:id', component: TemplateAdministrationComponent }, - { path: 'administration/securities', component: SecuritiesAdministrationComponent }, - { path: 'administration/sendmail', component: SendmailAdministrationComponent }, - { path: 'administration/shippings', component: ShippingsAdministrationComponent }, - { path: 'administration/shippings/new', component: ShippingAdministrationComponent }, - { path: 'administration/shippings/:id', component: ShippingAdministrationComponent }, + { path: 'administration', canActivate: [AppGuard], component: AdministrationComponent }, + { path: 'administration/users', canActivate: [AppGuard], component: UsersAdministrationComponent }, + { path: 'administration/users/new', canActivate: [AppGuard], component: UserAdministrationComponent }, + { path: 'administration/users/:id', canActivate: [AppGuard], component: UserAdministrationComponent }, + { path: 'administration/groups', canActivate: [AppGuard], component: GroupsAdministrationComponent }, + { path: 'administration/groups/new', canActivate: [AppGuard], component: GroupAdministrationComponent }, + { path: 'administration/groups/:id', canActivate: [AppGuard], component: GroupAdministrationComponent }, + { path: 'administration/baskets', canActivate: [AppGuard], component: BasketsAdministrationComponent }, + { path: 'administration/baskets/new', canActivate: [AppGuard], component: BasketAdministrationComponent }, + { path: 'administration/baskets/:id', canActivate: [AppGuard], component: BasketAdministrationComponent }, + { path: 'administration/doctypes', canActivate: [AppGuard], component: DoctypesAdministrationComponent }, + { path: 'administration/diffusionModels', canActivate: [AppGuard], component: DiffusionModelsAdministrationComponent }, + { path: 'administration/diffusionModels/new', canActivate: [AppGuard], component: DiffusionModelAdministrationComponent }, + { path: 'administration/diffusionModels/:id', canActivate: [AppGuard], component: DiffusionModelAdministrationComponent }, + { path: 'administration/entities', canActivate: [AppGuard], component: EntitiesAdministrationComponent }, + { path: 'administration/statuses', canActivate: [AppGuard], component: StatusesAdministrationComponent }, + { path: 'administration/statuses/new', canActivate: [AppGuard], component: StatusAdministrationComponent }, + { path: 'administration/statuses/:identifier', canActivate: [AppGuard], component: StatusAdministrationComponent }, + { path: 'administration/parameters', canActivate: [AppGuard], component: ParametersAdministrationComponent }, + { path: 'administration/parameters/new', canActivate: [AppGuard], component: ParameterAdministrationComponent }, + { path: 'administration/parameters/:id', canActivate: [AppGuard], component: ParameterAdministrationComponent }, + { path: 'administration/reports', canActivate: [AppGuard], component : ReportsAdministrationComponent}, + { path: 'administration/priorities', canActivate: [AppGuard], component : PrioritiesAdministrationComponent }, + { path: 'administration/priorities/new', canActivate: [AppGuard], component : PriorityAdministrationComponent }, + { path: 'administration/priorities/:id', canActivate: [AppGuard], component : PriorityAdministrationComponent }, + { path: 'administration/actions', canActivate: [AppGuard], component: ActionsAdministrationComponent }, + { path: 'administration/actions/new', canActivate: [AppGuard], component: ActionAdministrationComponent }, + { path: 'administration/actions/:id', canActivate: [AppGuard], component: ActionAdministrationComponent }, + { path: 'administration/notifications', canActivate: [AppGuard], component: NotificationsAdministrationComponent }, + { path: 'administration/notifications/new', canActivate: [AppGuard], component: NotificationAdministrationComponent }, + { path: 'administration/notifications/:identifier', canActivate: [AppGuard], component: NotificationAdministrationComponent }, + { path: 'administration/history', canActivate: [AppGuard], component: HistoryAdministrationComponent }, + { path: 'administration/update-status', canActivate: [AppGuard], component: UpdateStatusAdministrationComponent }, + { path: 'administration/contacts-groups', canActivate: [AppGuard], component: ContactsGroupsAdministrationComponent }, + { path: 'administration/contacts-groups/new', canActivate: [AppGuard], component: ContactsGroupAdministrationComponent }, + { path: 'administration/contacts-groups/:id', canActivate: [AppGuard], component: ContactsGroupAdministrationComponent }, + { path: 'administration/contacts-filling', canActivate: [AppGuard], component: ContactsFillingAdministrationComponent }, + { path: 'administration/versions-update', canActivate: [AppGuard], component: VersionsUpdateAdministrationComponent }, + { path: 'administration/docservers', canActivate: [AppGuard], component: DocserversAdministrationComponent }, + { path: 'administration/docservers/new', canActivate: [AppGuard], component: DocserverAdministrationComponent }, + { path: 'administration/templates', canActivate: [AppGuard], component: TemplatesAdministrationComponent }, + { path: 'administration/templates/new', canActivate: [AppGuard], component: TemplateAdministrationComponent }, + { path: 'administration/templates/:id', canActivate: [AppGuard], component: TemplateAdministrationComponent }, + { path: 'administration/securities', canActivate: [AppGuard], component: SecuritiesAdministrationComponent }, + { path: 'administration/sendmail', canActivate: [AppGuard], component: SendmailAdministrationComponent }, + { path: 'administration/shippings', canActivate: [AppGuard], component: ShippingsAdministrationComponent }, + { path: 'administration/shippings/new', canActivate: [AppGuard], component: ShippingAdministrationComponent }, + { path: 'administration/shippings/:id', canActivate: [AppGuard], component: ShippingAdministrationComponent }, ]), ], exports: [ diff --git a/src/frontend/app/app-routing.module.ts b/src/frontend/app/app-routing.module.ts index 8303b020e8f..4b492646a7c 100755 --- a/src/frontend/app/app-routing.module.ts +++ b/src/frontend/app/app-routing.module.ts @@ -10,20 +10,21 @@ import { BasketListComponent } from './list/basket-list.component'; import { SignatureBookComponent } from './signature-book.component'; import { SaveNumericPackageComponent } from './save-numeric-package.component'; import { PrintSeparatorComponent } from './separator/print-separator/print-separator.component'; +import { AppGuard } from '../service/app.guard'; @NgModule({ imports: [ RouterModule.forRoot([ { path: 'activate-user', component: ActivateUserComponent}, { path: 'password-modification', component: PasswordModificationComponent }, - { path: 'profile', component: ProfileComponent }, - { path: 'about-us', component: AboutUsComponent }, - { path: 'home', component: HomeComponent }, - { path: 'basketList/users/:userSerialId/groups/:groupSerialId/baskets/:basketId', component: BasketListComponent }, - { path: 'saveNumericPackage', component: SaveNumericPackageComponent }, - { path: 'separators/print', component: PrintSeparatorComponent }, - { path: 'signatureBook/users/:userId/groups/:groupId/baskets/:basketId/resources/:resId', component: SignatureBookComponent }, - { path: '**', redirectTo: 'home', pathMatch: 'full' }, + { path: 'profile', canActivate: [AppGuard], component: ProfileComponent }, + { path: 'about-us', canActivate: [AppGuard], component: AboutUsComponent }, + { path: 'home', canActivate: [AppGuard], component: HomeComponent }, + { path: 'basketList/users/:userSerialId/groups/:groupSerialId/baskets/:basketId', canActivate: [AppGuard], component: BasketListComponent }, + { path: 'saveNumericPackage', canActivate: [AppGuard], component: SaveNumericPackageComponent }, + { path: 'separators/print', canActivate: [AppGuard], component: PrintSeparatorComponent }, + { path: 'signatureBook/users/:userId/groups/:groupId/baskets/:basketId/resources/:resId', canActivate: [AppGuard],component: SignatureBookComponent }, + { path: '**', redirectTo: 'home', pathMatch: 'full' }, ], { useHash: true }), ], exports: [ diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts new file mode 100644 index 00000000000..ff37385c2d3 --- /dev/null +++ b/src/frontend/service/app.guard.ts @@ -0,0 +1,20 @@ + +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router'; +import { HttpClient } from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class AppGuard implements CanActivate { + + constructor(public http: HttpClient, private router: Router) { } + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { + + // TO DO : CAN BE REMOVE AFTER FULL V2 + localStorage.setItem('PreviousV2Route', state.url); + + return true; + } +} -- GitLab