@5minds/processcube_engine
Version:
The ProcessCube Engine. Stores and executes BPMNs.
240 lines • 10.6 kB
JavaScript
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.IamServiceMock = exports.claimConfigs = void 0;
const inversify_1 = require("inversify");
const processcube_engine_sdk_1 = require("@5minds/processcube_engine_sdk");
const Configurator_1 = __importDefault(require("../Configurator"));
const users = {
defaultUser: {
email: 'default@user.com',
name: 'default_user',
Default_Test_Lane: true,
Lane: true,
LaneA: true,
LaneB: true,
LaneC: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
},
secondDefaultUser: {
email: 'second_default@user.com',
name: 'second_default_user',
Default_Test_Lane: true,
Lane: true,
LaneA: true,
LaneB: true,
LaneC: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
},
defaultUserWithoutTerminateProcessClaim: {
Default_Test_Lane: true,
Lane: true,
LaneA: true,
LaneB: true,
LaneC: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
},
userWithoutDefaultLaneAccess: {
Lane: true,
LaneA: true,
LaneB: true,
LaneC: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
},
userWithoutExternalTaskClaim: {
Default_Test_Lane: true,
Lane: true,
LaneA: true,
LaneB: true,
LaneC: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
},
observer: {
[]: true,
},
observerWithAdditionalLaneClaims: {
[]: true,
Default_Test_Lane: true,
Lane: true,
LaneA: true,
LaneB: true,
LaneC: true,
},
observerWithAdditionalWriteAccess: {
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
},
observerWithFullAccess: {
[]: true,
Default_Test_Lane: true,
Lane: true,
LaneA: true,
LaneB: true,
LaneC: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
[]: true,
},
superAdmin: {
[]: true,
},
restrictedUser: {
Default_Test_Lane: false,
Lane: false,
LaneA: false,
LaneB: false,
LaneC: false,
[]: false,
[]: false,
[]: false,
[]: false,
[]: false,
[]: false,
[]: false,
[]: false,
},
userWithAccessToSubLaneC: {
LaneA: true,
LaneC: true,
},
userWithAccessToLaneA: {
LaneA: true,
[]: true,
},
userWithNoAccessToLaneA: {
LaneB: true,
LaneC: true,
[]: true,
},
expiresIn0SecIdentity: {
Lane: true,
[]: true,
[]: true,
},
expiresIn2SecIdentity: {
Lane: true,
[]: true,
[]: true,
},
};
exports.claimConfigs = users;
const defaultRootAccessToken = 'ZHVtbXlfdG9rZW4=';
const internalToken = 'QXRsYXNFbmdpbmVJbnRlcm5hbFVzZXI=';
/**
* Used for integrationtests only.
*/
let IamServiceMock = class IamServiceMock {
config;
constructor() {
this.config = Configurator_1.default.get('iam');
}
getAuthorityAddress() {
return 'http://localhost:11560';
}
ensureHasClaim(identity, claimName, claimValue = true, excludeAdmins = true) {
const identityHasclaim = this.checkIfIdentityHasClaim(identity, claimName, claimValue, excludeAdmins);
if (!identityHasclaim) {
this.throwForbiddenError(identity, claimName, claimValue, identity.claims[claimName]);
}
}
checkIfIdentityHasClaim(identity, claimName, claimValue = true, excludeAdmins = true) {
const isSuperAdmin = identity.claims && identity.claims[processcube_engine_sdk_1.claims.canManageProcessInstances] != undefined;
const isInternalUser = identity.userId === 'AtlasEngineInternalUser';
if (isInternalUser || (isSuperAdmin && excludeAdmins)) {
return true;
}
if (this.checkIfTokenIsRootAccessToken(identity.token)) {
return process.env.iam__allowAnonymousRootAccess != 'false' && excludeAdmins;
}
if (identity.userId === 'forbiddenUser') {
return false;
}
const userDoesNotHaveClaim = identity.claims && identity.claims[claimName] == undefined;
if (userDoesNotHaveClaim) {
return false;
}
if (claimValue) {
return identity.claims[claimName] == claimValue;
}
return true;
}
checkIfUserIsSuperAdmin(identity) {
if (this.checkIfTokenIsRootAccessToken(identity.token)) {
return process.env.iam__allowAnonymousRootAccess != 'false';
}
return identity.claims != null && identity.claims[processcube_engine_sdk_1.claims.canManageProcessInstances] != undefined;
}
checkIfUserIsObserver(identity) {
return this.checkIfIdentityHasClaim(identity, processcube_engine_sdk_1.claims.canObserveEngine);
}
checkIfTokenIsInternalToken(token) {
return token === internalToken;
}
checkIfTokenIsRootAccessToken(token) {
return this.config?.rootAccessToken ? token === this.config.rootAccessToken : token === defaultRootAccessToken;
}
throwForbiddenError(identity, claimName, requiredClaimValue, actualClaimValue, msg) {
const forbiddenError = new processcube_engine_sdk_1.ForbiddenError(msg || 'access denied');
forbiddenError.additionalInformation = {
identity: identity,
claim: claimName,
requiredClaimValue: requiredClaimValue,
actualClaimValue: actualClaimValue,
};
throw forbiddenError;
}
};
exports.IamServiceMock = IamServiceMock;
exports.IamServiceMock = IamServiceMock = __decorate([
(0, inversify_1.injectable)(),
__metadata("design:paramtypes", [])
], IamServiceMock);
//# sourceMappingURL=IamServiceMock.js.map