UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

55 lines 8.44 kB
import { Injectable } from '@angular/core'; import { AuthenticationModule } from '../../authentication/authentication.module'; import * as i0 from "@angular/core"; import * as i1 from "../../routing/redirect-service/redirect.service"; import * as i2 from "../../user/services/user.service"; import * as i3 from "../../groups/services/next-group.service"; import * as i4 from "../../configuration/configuration.service"; import * as i5 from "../../logger/services/logger.service"; export class GroupGuardService { _redirectService; _userService; _nextGroupService; _configService; _log; _loginUrl; constructor(_redirectService, _userService, _nextGroupService, _configService, _log) { this._redirectService = _redirectService; this._userService = _userService; this._nextGroupService = _nextGroupService; this._configService = _configService; this._log = _log; this._loginUrl = this._redirectService.resolveLoginPath(); } canActivate(route, state) { this._redirectService.intendedRoute = route; const view = this._configService.getViewByUrl(state.url.toString()); return this.canAccessView(view, state.url.toString()); } canAccessView(view, url) { if (typeof view.access !== 'string' && view.access.hasOwnProperty('group')) { let allowedGroups; if (Array.isArray(view.access.group)) { allowedGroups = view.access.group; } else { allowedGroups = [view.access.group]; } const groupOfUser = this._nextGroupService.groupOfUser.map(group => group.title); return allowedGroups.some(groupTitle => { return groupOfUser.includes(groupTitle); }); } throw new Error('Group guard is declared for a view with no group guard configuration!' + ` Add group guard configuration for view at ${url}, or remove the guard.`); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupGuardService, deps: [{ token: i1.RedirectService }, { token: i2.UserService }, { token: i3.NextGroupService }, { token: i4.ConfigurationService }, { token: i5.LoggerService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupGuardService, providedIn: AuthenticationModule }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupGuardService, decorators: [{ type: Injectable, args: [{ providedIn: AuthenticationModule }] }], ctorParameters: () => [{ type: i1.RedirectService }, { type: i2.UserService }, { type: i3.NextGroupService }, { type: i4.ConfigurationService }, { type: i5.LoggerService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvYXV0aG9yaXphdGlvbi9ncm91cC9ncm91cC1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7QUFhaEYsTUFBTSxPQUFPLGlCQUFpQjtJQUlKO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFOTCxTQUFTLENBQVM7SUFFbkMsWUFBc0IsZ0JBQWlDLEVBQ2pDLFlBQXlCLEVBQ3pCLGlCQUFtQyxFQUNuQyxjQUFvQyxFQUNwQyxJQUFtQjtRQUpuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsbUJBQWMsR0FBZCxjQUFjLENBQXNCO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQWU7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFFakUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxhQUFhLENBQUMsSUFBVSxFQUFFLEdBQVc7UUFDeEMsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3hFLElBQUksYUFBNEIsQ0FBQztZQUNqQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbEMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ3JDO2lCQUFNO2dCQUNILGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdkM7WUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVqRixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1RUFBdUU7Y0FDakYsOENBQThDLEdBQUcsd0JBQXdCLENBQUMsQ0FBQztJQUNyRixDQUFDO3dHQW5DUSxpQkFBaUI7NEdBQWpCLGlCQUFpQixjQUZWLG9CQUFvQjs7NEZBRTNCLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDSixVQUFVLEVBQUUsb0JBQW9CO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uTW9kdWxlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1JlZGlyZWN0U2VydmljZX0gZnJvbSAnLi4vLi4vcm91dGluZy9yZWRpcmVjdC1zZXJ2aWNlL3JlZGlyZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSAnLi4vLi4vdXNlci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtWaWV3fSBmcm9tICcuLi8uLi8uLi9jb21tb25zL3NjaGVtYSc7XG5pbXBvcnQge05leHRHcm91cFNlcnZpY2V9IGZyb20gJy4uLy4uL2dyb3Vwcy9zZXJ2aWNlcy9uZXh0LWdyb3VwLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgICAgIHByb3ZpZGVkSW46IEF1dGhlbnRpY2F0aW9uTW9kdWxlXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwR3VhcmRTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9naW5Vcmw6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcmVkaXJlY3RTZXJ2aWNlOiBSZWRpcmVjdFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9uZXh0R3JvdXBTZXJ2aWNlOiBOZXh0R3JvdXBTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY29uZmlnU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fbG9naW5VcmwgPSB0aGlzLl9yZWRpcmVjdFNlcnZpY2UucmVzb2x2ZUxvZ2luUGF0aCgpO1xuICAgIH1cblxuICAgIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6XG4gICAgICAgIE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgICAgIHRoaXMuX3JlZGlyZWN0U2VydmljZS5pbnRlbmRlZFJvdXRlID0gcm91dGU7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLl9jb25maWdTZXJ2aWNlLmdldFZpZXdCeVVybChzdGF0ZS51cmwudG9TdHJpbmcoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbkFjY2Vzc1ZpZXcodmlldywgc3RhdGUudXJsLnRvU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5BY2Nlc3NWaWV3KHZpZXc6IFZpZXcsIHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2Ygdmlldy5hY2Nlc3MgIT09ICdzdHJpbmcnICYmIHZpZXcuYWNjZXNzLmhhc093blByb3BlcnR5KCdncm91cCcpKSB7XG4gICAgICAgICAgICBsZXQgYWxsb3dlZEdyb3VwczogQXJyYXk8c3RyaW5nPjtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZpZXcuYWNjZXNzLmdyb3VwKSkge1xuICAgICAgICAgICAgICAgIGFsbG93ZWRHcm91cHMgPSB2aWV3LmFjY2Vzcy5ncm91cDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWxsb3dlZEdyb3VwcyA9IFt2aWV3LmFjY2Vzcy5ncm91cF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBncm91cE9mVXNlciA9IHRoaXMuX25leHRHcm91cFNlcnZpY2UuZ3JvdXBPZlVzZXIubWFwKGdyb3VwID0+IGdyb3VwLnRpdGxlKTtcblxuICAgICAgICAgICAgcmV0dXJuIGFsbG93ZWRHcm91cHMuc29tZShncm91cFRpdGxlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXBPZlVzZXIuaW5jbHVkZXMoZ3JvdXBUaXRsZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dyb3VwIGd1YXJkIGlzIGRlY2xhcmVkIGZvciBhIHZpZXcgd2l0aCBubyBncm91cCBndWFyZCBjb25maWd1cmF0aW9uISdcbiAgICAgICAgICAgICsgYCBBZGQgZ3JvdXAgZ3VhcmQgY29uZmlndXJhdGlvbiBmb3IgdmlldyBhdCAke3VybH0sIG9yIHJlbW92ZSB0aGUgZ3VhcmQuYCk7XG4gICAgfVxufVxuIl19