Merge branch 'develop' of https://gitea.ci.apside-top.fr/ygrette/Digitalisation_EPA_Client into develop
commit
1692adaf42
@ -1,28 +0,0 @@ |
|||||||
import { Injectable } from '@angular/core'; |
|
||||||
import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router'; |
|
||||||
import { Observable } from 'rxjs'; |
|
||||||
import { tap } from 'rxjs/operators'; |
|
||||||
|
|
||||||
import { AuthService } from './auth.service'; |
|
||||||
|
|
||||||
/** |
|
||||||
* Guard permettant de gérer les autorisations au niveau des routes. |
|
||||||
*/ |
|
||||||
@Injectable() |
|
||||||
export class AuthGuard implements CanActivate { |
|
||||||
constructor(private authService: AuthService) { } |
|
||||||
|
|
||||||
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { |
|
||||||
return this.authService.canActivateProtectedRoutes$.pipe(tap(isLoggin => this.login(isLoggin))); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Affiche la page de connexion si l'utilisateur n'est pas connecté. |
|
||||||
* @param isLoggin Booléen permettant de savoir si l'utilisateur est connecté ou non |
|
||||||
*/ |
|
||||||
private login(isLoggin: boolean) { |
|
||||||
if (!isLoggin) { |
|
||||||
this.authService.login(); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,45 @@ |
|||||||
|
import { Injectable } from '@angular/core'; |
||||||
|
import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, Router } from '@angular/router'; |
||||||
|
import { Observable } from 'rxjs'; |
||||||
|
import { tap } from 'rxjs/operators'; |
||||||
|
|
||||||
|
import { AuthService } from './auth.service'; |
||||||
|
|
||||||
|
/** |
||||||
|
* Guard permettant de gérer les autorisations au niveau des routes. |
||||||
|
*/ |
||||||
|
@Injectable() |
||||||
|
export class AuthGuard implements CanActivate { |
||||||
|
constructor(private authService: AuthService, private router: Router) { } |
||||||
|
|
||||||
|
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { |
||||||
|
return this.authService.canActivateProtectedRoutes$.pipe(tap(isLoggin => this.login(isLoggin,route))); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Vérifie si l'utilisateur est connecté et si l'utilisateur est autorisé à accéder à la route. |
||||||
|
* @param isLoggin Booléen permettant de savoir si l'utilisateur est connecté ou non |
||||||
|
* @param route Route à laquelle l'utilisateur souhaite accéder |
||||||
|
*/ |
||||||
|
private login(isLoggin: boolean, route: ActivatedRouteSnapshot): boolean { |
||||||
|
if (!isLoggin) { |
||||||
|
this.authService.login(); |
||||||
|
} |
||||||
|
|
||||||
|
const firstRole = this.authService.firstRole; |
||||||
|
|
||||||
|
if (firstRole) { |
||||||
|
// Vérifie si la route est restreinte par des rôles
|
||||||
|
if (route.data.roles && route.data.roles.indexOf(firstRole) === -1) { |
||||||
|
|
||||||
|
// l'utisateur n'est pas autorisé alors on le redirige vers la page d'accueil
|
||||||
|
this.router.navigate(['/']); |
||||||
|
|
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
// L'utilisateur est autorisé
|
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -1,31 +0,0 @@ |
|||||||
<html> |
|
||||||
|
|
||||||
<body> |
|
||||||
<script> |
|
||||||
// Based on: https://manfredsteyer.github.io/angular-oauth2-oidc/docs/additional-documentation/silent-refresh.html |
|
||||||
|
|
||||||
const checks = [/[\?|&|#]code=/, /[\?|&|#]error=/, /[\?|&|#]token=/, /[\?|&|#]id_token=/]; |
|
||||||
|
|
||||||
function isResponse(str) { |
|
||||||
let count = 0; |
|
||||||
|
|
||||||
if (!str) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
for (let i = 0; i < checks.length; i++) { |
|
||||||
if (str.match(checks[i])) return true; |
|
||||||
} |
|
||||||
|
|
||||||
return false; |
|
||||||
} |
|
||||||
|
|
||||||
let message = isResponse(location.hash) ? location.hash : '#' + location.search; |
|
||||||
|
|
||||||
console.log("Rafraîchissement silencieux de l'iframe affichée dans l'application parente, message: ", message); |
|
||||||
|
|
||||||
(window.opener || window.parent).postMessage(message, location.origin); |
|
||||||
</script> |
|
||||||
</body> |
|
||||||
|
|
||||||
</html> |
|
Loading…
Reference in new issue