Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import {Injectable} from "@angular/core";
- import {Router, CanActivate, ActivatedRouteSnapshot, ActivatedRoute} from "@angular/router";
- import {User} from "../_models/user";
- import {UsersService} from "../_services/users.service";
- import {NavigationSharedService} from "../_services/navigation.shared.service";
- import {PathPermission} from "../_models/path.permission";
- @Injectable()
- export class AuthGuard implements CanActivate {
- pathPermissionMap: PathPermission[];
- currentUser: User;
- constructor(private router: Router,
- private route: ActivatedRoute,
- private userService: UsersService,
- public navigationSharedService: NavigationSharedService) {
- this.pathPermissionMap = [];
- this.currentUser = UsersService.getLoggedInUser() ? UsersService.getLoggedInUser() : this.authenticate();
- this.pathPermissionMap.push(new PathPermission('valiskasutaja-vordlus-esindaja', 'permissions.uc8.comparison.external', 'EXTERNAL_USER'));
- this.pathPermissionMap.push(new PathPermission('valiskasutaja-vordlus-esindaja', 'permissions.uc8.comparison.official.external', 'INTERNAL'));
- this.pathPermissionMap.push(new PathPermission('paketid', 'permissions.uc4.packagelist.view', null));
- this.pathPermissionMap.push(new PathPermission('paketid-lisa', 'permissions.uc4.packagelist.insert', null));
- this.pathPermissionMap.push(new PathPermission('paketid-muuda', 'permissions.uc4.packagelist.view', null));
- this.pathPermissionMap.push(new PathPermission('paasuoigus-loobu', 'permissions.uc20.accesspermission.discard', 'INTERNAL'));
- this.pathPermissionMap.push(new PathPermission('paasuoigus-muuda', 'permissions.uc3.accesspermission.update', null));
- this.pathPermissionMap.push(new PathPermission('paasuoigus-lisa', 'permissions.uc3.accesspermission.insert', null));
- this.pathPermissionMap.push(new PathPermission('valiskasutaja-paasuoigused', 'permissions.uc24.externaluser', null));
- this.pathPermissionMap.push(new PathPermission('valiskasutaja-nimele-antud', 'permissions.uc24.externaluser', null));
- this.pathPermissionMap.push(new PathPermission('valisametniku-paasuoigused', 'permissions.uc26.externalofficial', null));
- this.pathPermissionMap.push(new PathPermission('valisametniku-nimele-antud', 'permissions.uc26.externalofficial', null));
- this.pathPermissionMap.push(new PathPermission('profiilid-nimekiri', 'permissions.uc23.profilelist.view', null));
- this.pathPermissionMap.push(new PathPermission('profiilid-vaatamine-muutmine', 'permissions.uc23.profilelist.edit', null));
- this.pathPermissionMap.push(new PathPermission('ametnik-vordlus-valik', 'permissions.uc8.comparison.official.official', null));
- this.pathPermissionMap.push(new PathPermission('valiskasutaja-vordlus-esindatav', 'permissions.uc8.comparison.official.external', null));
- this.pathPermissionMap.push(new PathPermission('isiku-nimele-antud', 'permissions.uc2.principalaccesspermissions.view', null));
- this.pathPermissionMap.push(new PathPermission('mulle-esitatud-taotlused', 'permissions.uc32.applications', null));
- this.pathPermissionMap.push(new PathPermission('minu-tehtud-taotlused', 'permissions.uc31.applications', null));
- this.pathPermissionMap.push(new PathPermission('sobralist', 'permissions.uc28.favourites', null));
- this.pathPermissionMap.push(new PathPermission('ametniku-paasuoigused', 'permissions.uc25.official', null));
- this.pathPermissionMap.push(new PathPermission('ametniku-nimele-antud', 'permissions.uc25.official', null));
- this.pathPermissionMap.push(new PathPermission('keskne-logi', 'permissions.uc37.accesspermission.view.central.log', null));
- this.pathPermissionMap.push(new PathPermission('keskne-logi-esindajad', 'permissions.uc18.accesspermission.view.representatives.central.log', null));
- }
- checkPermissions(route: ActivatedRouteSnapshot) {
- if(this.currentUser) {
- let loaderName = 'hasPermission_' + (new Date()).getTime() / 1000;
- this.navigationSharedService.startLoading(loaderName);
- if (this.currentUser.jwt == null) {
- this.navigationSharedService.stopLoading(loaderName);
- console.log("soustin")
- this.router.navigate(['']);
- return false;
- } else {
- for (let pathPermission of this.pathPermissionMap) {
- if (route.routeConfig.path === pathPermission.path) {
- let doCheck: boolean = false;
- if (pathPermission.checkOnlyForUserType === 'INTERNAL' && this.currentUser.userType === 'INTERNAL') {
- doCheck = true;
- } else if (pathPermission.checkOnlyForUserType === 'EXTERNAL_USER' && this.currentUser.userType === 'EXTERNAL_USER') {
- doCheck = true;
- } else if (pathPermission.checkOnlyForUserType === 'EXTERNAL_OFFICIAL' && this.currentUser.userType === 'EXTERNAL_OFFICIAL') {
- doCheck = true;
- } else if (pathPermission.checkOnlyForUserType == null) {
- doCheck = true;
- }
- if (doCheck) {
- return this.userService.hasPermission(pathPermission.permission).then(result => {
- this.navigationSharedService.stopLoading(loaderName);
- return true;
- }).catch((err: any) => {
- this.navigationSharedService.stopLoading(loaderName);
- this.router.navigate(['/oigused-puuduvad'], {relativeTo: this.route, replaceUrl: true});
- return false;
- });
- }
- }
- }
- }
- this.navigationSharedService.stopLoading(loaderName);
- return true;
- }
- }
- canActivate(route: ActivatedRouteSnapshot) {
- return this.checkPermissions(route);
- }
- authenticate(){
- let userPreferences = this.navigationSharedService.getUserPreferences();
- let accessToken = (<any>window).accessToken;
- let role = (<any>window).role;
- let sessionId = (<any>window).sessionId;
- return new User(this.userService.getCurrentUser(accessToken, role, sessionId, "0", "0", userPreferences.languageIso639_2).then(user => {
- this.currentUser = user;
- return this.currentUser;
- }));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement