diff --git a/connect/communityGuard/isCommunityOrAdmin.ts b/connect/communityGuard/isCommunityOrAdmin.ts new file mode 100644 index 00000000..952a88fd --- /dev/null +++ b/connect/communityGuard/isCommunityOrAdmin.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { + Router, + CanActivate, + ActivatedRouteSnapshot, + RouterStateSnapshot, + CanLoad, Route, UrlSegment +} from '@angular/router'; +import {Observable} from 'rxjs'; + +import {ConnectHelper} from '../connectHelper'; +import {Session} from '../../login/utils/helper.class'; + +@Injectable() +export class IsCommunityOrAdmin implements CanActivate { + + constructor(private router: Router) { + } + + check(community: string): Observable | boolean { + if(Session.isLoggedIn() && Session.isPortalAdministrator()) { + return true; + } + else if (community && community !== 'undefined') { + return true; + } else { + this.router.navigate(['errorcommunity']); + return false; + } + } + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | boolean { + return this.check(route.queryParams['communityId']); + } + +}