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