Revision 61332
Added by Konstantinos Triantafyllou almost 3 years ago
isRouteEnabled.guard.ts | ||
---|---|---|
1 | 1 |
import {Observable} from 'rxjs'; |
2 | 2 |
import {take, tap} from 'rxjs/operators'; |
3 | 3 |
import {Injectable} from '@angular/core'; |
4 |
import {ActivatedRouteSnapshot, CanActivate, Data, Router, RouterStateSnapshot} from '@angular/router'; |
|
4 |
import {ActivatedRouteSnapshot, CanActivate, Data, Router, RouterStateSnapshot, UrlTree} from '@angular/router';
|
|
5 | 5 |
import {ConfigurationService} from '../utils/configuration/configuration.service'; |
6 | 6 |
import {ConnectHelper} from '../connect/connectHelper'; |
7 | 7 |
import {properties} from "../../../environments/environment"; |
... | ... | |
10 | 10 |
export class IsRouteEnabled implements CanActivate { |
11 | 11 |
|
12 | 12 |
constructor(private router: Router, |
13 |
private config: ConfigurationService) {} |
|
14 |
|
|
13 |
private config: ConfigurationService) { |
|
14 |
} |
|
15 |
|
|
15 | 16 |
check(data: Data, path: string): Observable<boolean> | boolean { |
16 | 17 |
const customRedirect = data['redirect']; |
17 | 18 |
const redirect = customRedirect ? customRedirect : '/error'; |
18 |
let community = ConnectHelper.getCommunityFromDomain(properties.domain);
|
|
19 |
let community = ConnectHelper.getCommunityFromDomain(properties.domain); |
|
19 | 20 |
if (!community && data['community']) { // for openaire or connect |
20 | 21 |
community = data['community']; |
21 | 22 |
} |
22 | 23 |
if (!community) { |
23 | 24 |
community = properties.adminToolsCommunity; |
24 | 25 |
} |
25 |
return this.config.isPageEnabledByState(properties, community, '/'+path).pipe(take(1),tap((enabled) => {
|
|
26 |
if(!enabled){
|
|
26 |
return this.config.isPageEnabledByState(properties, community, '/' + path).pipe(take(1), tap((enabled) => {
|
|
27 |
if (!enabled) {
|
|
27 | 28 |
this.router.navigate([redirect], {queryParams: {'page': path}}); |
28 | 29 |
} |
29 | 30 |
})); |
30 |
|
|
31 |
|
|
31 | 32 |
} |
32 |
|
|
33 |
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
|
|
33 |
|
|
34 |
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
|
34 | 35 |
return this.check(route.data, state.url); |
35 | 36 |
} |
36 |
|
|
37 |
|
|
37 | 38 |
} |
Also available in: Unified diff
[Library | Angular 11]: Update canActivate function definition