@node-c/domain-iam 1.0.0-alpha10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -0
- package/README.md +4 -0
- package/dist/common/definitions/common.constants.d.ts +3 -0
- package/dist/common/definitions/common.constants.js +8 -0
- package/dist/common/definitions/common.constants.js.map +1 -0
- package/dist/common/definitions/index.d.ts +1 -0
- package/dist/common/definitions/index.js +18 -0
- package/dist/common/definitions/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/module/iam.definitions.d.ts +13 -0
- package/dist/module/iam.definitions.js +3 -0
- package/dist/module/iam.definitions.js.map +1 -0
- package/dist/module/iam.module.d.ts +5 -0
- package/dist/module/iam.module.js +28 -0
- package/dist/module/iam.module.js.map +1 -0
- package/dist/module/index.d.ts +2 -0
- package/dist/module/index.js +19 -0
- package/dist/module/index.js.map +1 -0
- package/dist/services/authentication/iam.authentication.definitions.d.ts +20 -0
- package/dist/services/authentication/iam.authentication.definitions.js +12 -0
- package/dist/services/authentication/iam.authentication.definitions.js.map +1 -0
- package/dist/services/authentication/iam.authentication.service.d.ts +8 -0
- package/dist/services/authentication/iam.authentication.service.js +26 -0
- package/dist/services/authentication/iam.authentication.service.js.map +1 -0
- package/dist/services/authentication/index.d.ts +2 -0
- package/dist/services/authentication/index.js +19 -0
- package/dist/services/authentication/index.js.map +1 -0
- package/dist/services/authenticationLocal/iam.authenticationLocal.definitions.d.ts +11 -0
- package/dist/services/authenticationLocal/iam.authenticationLocal.definitions.js +3 -0
- package/dist/services/authenticationLocal/iam.authenticationLocal.definitions.js.map +1 -0
- package/dist/services/authenticationLocal/iam.authenticationLocal.service.d.ts +10 -0
- package/dist/services/authenticationLocal/iam.authenticationLocal.service.js +70 -0
- package/dist/services/authenticationLocal/iam.authenticationLocal.service.js.map +1 -0
- package/dist/services/authenticationLocal/index.d.ts +2 -0
- package/dist/services/authenticationLocal/index.js +19 -0
- package/dist/services/authenticationLocal/index.js.map +1 -0
- package/dist/services/authorization/iam.authorization.definitions.d.ts +37 -0
- package/dist/services/authorization/iam.authorization.definitions.js +3 -0
- package/dist/services/authorization/iam.authorization.definitions.js.map +1 -0
- package/dist/services/authorization/iam.authorization.service.d.ts +18 -0
- package/dist/services/authorization/iam.authorization.service.js +222 -0
- package/dist/services/authorization/iam.authorization.service.js.map +1 -0
- package/dist/services/authorization/index.d.ts +2 -0
- package/dist/services/authorization/index.js +19 -0
- package/dist/services/authorization/index.js.map +1 -0
- package/dist/services/index.d.ts +5 -0
- package/dist/services/index.js +22 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/tokenManager/iam.tokenManager.definitions.d.ts +35 -0
- package/dist/services/tokenManager/iam.tokenManager.definitions.js +9 -0
- package/dist/services/tokenManager/iam.tokenManager.definitions.js.map +1 -0
- package/dist/services/tokenManager/iam.tokenManager.service.d.ts +14 -0
- package/dist/services/tokenManager/iam.tokenManager.service.js +203 -0
- package/dist/services/tokenManager/iam.tokenManager.service.js.map +1 -0
- package/dist/services/tokenManager/index.d.ts +2 -0
- package/dist/services/tokenManager/index.js +19 -0
- package/dist/services/tokenManager/index.js.map +1 -0
- package/dist/services/users/iam.users.definitions.d.ts +30 -0
- package/dist/services/users/iam.users.definitions.js +8 -0
- package/dist/services/users/iam.users.definitions.js.map +1 -0
- package/dist/services/users/iam.users.service.d.ts +16 -0
- package/dist/services/users/iam.users.service.js +93 -0
- package/dist/services/users/iam.users.service.js.map +1 -0
- package/dist/services/users/index.d.ts +2 -0
- package/dist/services/users/index.js +19 -0
- package/dist/services/users/index.js.map +1 -0
- package/package.json +25 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.IAMAuthorizationService = void 0;
|
|
16
|
+
const core_1 = require("@node-c/core");
|
|
17
|
+
const general_tools_1 = require("@ramster/general-tools");
|
|
18
|
+
const immutable_1 = __importDefault(require("immutable"));
|
|
19
|
+
const ramda_1 = require("ramda");
|
|
20
|
+
class IAMAuthorizationService extends core_1.DomainEntityService {
|
|
21
|
+
constructor(persistanceAuthorizationPointsService, defaultMethods = [core_1.DomainMethod.Find], additionalPersistanceEntityServices) {
|
|
22
|
+
super(persistanceAuthorizationPointsService, defaultMethods, additionalPersistanceEntityServices);
|
|
23
|
+
this.persistanceAuthorizationPointsService = persistanceAuthorizationPointsService;
|
|
24
|
+
this.defaultMethods = defaultMethods;
|
|
25
|
+
this.additionalPersistanceEntityServices = additionalPersistanceEntityServices;
|
|
26
|
+
}
|
|
27
|
+
static checkAccess(authorizationPoints, inputData, user) {
|
|
28
|
+
const mutatedInputData = immutable_1.default.fromJS(inputData).toJS();
|
|
29
|
+
const userPermissionsData = user.currentAuthorizationPoints;
|
|
30
|
+
let hasAccess = false;
|
|
31
|
+
let inputDataToBeMutated = {};
|
|
32
|
+
for (const apId in authorizationPoints) {
|
|
33
|
+
if (!userPermissionsData[apId]) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const apData = authorizationPoints[apId];
|
|
37
|
+
const { allowedInputData, forbiddenInputData, inputDataFieldName, requiredStaticData, userFieldName } = apData;
|
|
38
|
+
const hasStaticData = requiredStaticData && Object.keys(requiredStaticData).length;
|
|
39
|
+
const innerMutatedInputData = immutable_1.default.fromJS(mutatedInputData).toJS();
|
|
40
|
+
const innerInputDataToBeMutated = {};
|
|
41
|
+
hasAccess = true;
|
|
42
|
+
if (allowedInputData && Object.keys(allowedInputData).length) {
|
|
43
|
+
const values = IAMAuthorizationService.matchInputValues(innerMutatedInputData, allowedInputData);
|
|
44
|
+
for (const key in values) {
|
|
45
|
+
innerInputDataToBeMutated[key] = values[key];
|
|
46
|
+
(0, general_tools_1.setNested)(innerMutatedInputData, key, values[key], { removeNestedFieldEscapeSign: true });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (forbiddenInputData && Object.keys(forbiddenInputData).length) {
|
|
50
|
+
const values = IAMAuthorizationService.matchInputValues(innerMutatedInputData, forbiddenInputData);
|
|
51
|
+
for (const key in values) {
|
|
52
|
+
innerInputDataToBeMutated[key] = undefined;
|
|
53
|
+
(0, general_tools_1.setNested)(innerMutatedInputData, key, undefined, { removeNestedFieldEscapeSign: true });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (hasStaticData) {
|
|
57
|
+
for (const fieldName in requiredStaticData) {
|
|
58
|
+
if (!IAMAuthorizationService.testValue((0, general_tools_1.getNested)({ inputData: innerMutatedInputData, user }, fieldName, { removeNestedFieldEscapeSign: true }), requiredStaticData[fieldName])) {
|
|
59
|
+
hasAccess = false;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (!hasAccess) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (userFieldName && inputDataFieldName) {
|
|
68
|
+
const inputFieldValue = (0, general_tools_1.getNested)(innerMutatedInputData, inputDataFieldName, {
|
|
69
|
+
removeNestedFieldEscapeSign: true
|
|
70
|
+
});
|
|
71
|
+
const userFieldValue = (0, general_tools_1.getNested)(user, userFieldName, { removeNestedFieldEscapeSign: true });
|
|
72
|
+
if (typeof userFieldValue === 'undefined' || typeof inputFieldValue === 'undefined') {
|
|
73
|
+
hasAccess = false;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const allowedValues = [];
|
|
77
|
+
const inputValueIsArray = inputFieldValue instanceof Array;
|
|
78
|
+
const valuesToTest = inputValueIsArray ? inputFieldValue : [inputFieldValue];
|
|
79
|
+
const valuesToTestAgainst = userFieldValue instanceof Array ? userFieldValue : [userFieldValue];
|
|
80
|
+
valuesToTest.forEach((valueToTest) => {
|
|
81
|
+
const valueToTestVariants = IAMAuthorizationService.getValuesForTesting(valueToTest);
|
|
82
|
+
for (const j in valuesToTestAgainst) {
|
|
83
|
+
const valueToTestAgainst = valuesToTestAgainst[j];
|
|
84
|
+
let matchFound = false;
|
|
85
|
+
for (const k in valueToTestVariants) {
|
|
86
|
+
const variant = valueToTestVariants[k];
|
|
87
|
+
if (valueToTestAgainst === variant) {
|
|
88
|
+
allowedValues.push(variant);
|
|
89
|
+
matchFound = true;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (matchFound) {
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
if (!allowedValues.length) {
|
|
99
|
+
hasAccess = false;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (inputValueIsArray) {
|
|
103
|
+
innerInputDataToBeMutated[inputDataFieldName] = allowedValues;
|
|
104
|
+
(0, general_tools_1.setNested)(mutatedInputData, inputDataFieldName, allowedValues, { removeNestedFieldEscapeSign: true });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
inputDataToBeMutated = (0, ramda_1.mergeDeepRight)(inputDataToBeMutated, innerInputDataToBeMutated);
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
return { hasAccess, inputDataToBeMutated };
|
|
111
|
+
}
|
|
112
|
+
static getValuesForTesting(valueToTest) {
|
|
113
|
+
const values = [
|
|
114
|
+
valueToTest,
|
|
115
|
+
parseInt(valueToTest, 10),
|
|
116
|
+
parseFloat(valueToTest)
|
|
117
|
+
];
|
|
118
|
+
if (valueToTest === 'true') {
|
|
119
|
+
values.push(true);
|
|
120
|
+
}
|
|
121
|
+
else if (valueToTest === 'false') {
|
|
122
|
+
values.push(false);
|
|
123
|
+
}
|
|
124
|
+
return values;
|
|
125
|
+
}
|
|
126
|
+
mapAuthorizationPoints(moduleName, additionalServicesOptions) {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
const { result: { items: apList } } = yield this.find(Object.assign(Object.assign({}, (additionalServicesOptions || {})), { filters: { moduleNames: { [core_1.PersistanceSelectOperator.Contains]: moduleName } }, findAll: true }));
|
|
129
|
+
const authorizationData = { __all: { __all: {} } };
|
|
130
|
+
const moduleGlobalData = authorizationData.__all.__all;
|
|
131
|
+
apList.forEach(item => {
|
|
132
|
+
if (!item.controllerNames) {
|
|
133
|
+
moduleGlobalData[item.id] = item;
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
item.controllerNames.forEach(ctlName => {
|
|
137
|
+
let ctlData = authorizationData[ctlName];
|
|
138
|
+
if (!ctlData) {
|
|
139
|
+
ctlData = { __all: {} };
|
|
140
|
+
authorizationData[ctlName] = ctlData;
|
|
141
|
+
}
|
|
142
|
+
if (!item.handlerNames) {
|
|
143
|
+
ctlData.__all[item.id] = item;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
item.handlerNames.forEach(hName => {
|
|
147
|
+
let hData = ctlData[hName];
|
|
148
|
+
if (!hData) {
|
|
149
|
+
hData = {};
|
|
150
|
+
ctlData[hName] = hData;
|
|
151
|
+
}
|
|
152
|
+
hData[item.id] = item;
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
return authorizationData;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
static matchInputValues(input, values) {
|
|
160
|
+
const mutatedInput = immutable_1.default.fromJS(input).toJS();
|
|
161
|
+
for (const fieldName in values) {
|
|
162
|
+
const value = (0, general_tools_1.getNested)(input, fieldName, { removeNestedFieldEscapeSign: true });
|
|
163
|
+
const allowedValue = values[fieldName];
|
|
164
|
+
const allowedValues = allowedValue instanceof Array ? allowedValue : [allowedValue];
|
|
165
|
+
let valueIsArray = false;
|
|
166
|
+
let valuesToCheck = [];
|
|
167
|
+
const valuesToSet = [];
|
|
168
|
+
if (value instanceof Array) {
|
|
169
|
+
valuesToCheck = value;
|
|
170
|
+
valueIsArray = true;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
valuesToCheck.push(value);
|
|
174
|
+
}
|
|
175
|
+
valuesToCheck.forEach(valueToCheck => {
|
|
176
|
+
const valueToCheckVariants = IAMAuthorizationService.getValuesForTesting(valueToCheck);
|
|
177
|
+
for (const i in valueToCheckVariants) {
|
|
178
|
+
const actualValueToCheck = valueToCheckVariants[i];
|
|
179
|
+
let checkPassed = false;
|
|
180
|
+
for (const j in allowedValues) {
|
|
181
|
+
if (IAMAuthorizationService.testValue(actualValueToCheck, allowedValues[j])) {
|
|
182
|
+
valuesToSet.push(valueToCheck);
|
|
183
|
+
checkPassed = true;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (checkPassed) {
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
if (!valuesToSet.length) {
|
|
193
|
+
(0, general_tools_1.setNested)(mutatedInput, fieldName, undefined, { removeNestedFieldEscapeSign: true });
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
(0, general_tools_1.setNested)(mutatedInput, fieldName, valueIsArray ? valuesToSet : valuesToSet[0], {
|
|
197
|
+
removeNestedFieldEscapeSign: true
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
return mutatedInput;
|
|
201
|
+
}
|
|
202
|
+
static testValue(valueToTest, valueToTestAgainst) {
|
|
203
|
+
if (typeof valueToTest === 'string' &&
|
|
204
|
+
typeof valueToTestAgainst === 'string' &&
|
|
205
|
+
valueToTestAgainst.charAt(0) === '/' &&
|
|
206
|
+
valueToTestAgainst.charAt(valueToTestAgainst.length - 1) === '/') {
|
|
207
|
+
const regex = new RegExp(valueToTestAgainst.substring(1, valueToTestAgainst.length - 2));
|
|
208
|
+
return regex.test(valueToTest);
|
|
209
|
+
}
|
|
210
|
+
const possibleValidValues = IAMAuthorizationService.getValuesForTesting(valueToTest);
|
|
211
|
+
let hasMatch = false;
|
|
212
|
+
for (const i in possibleValidValues) {
|
|
213
|
+
if (possibleValidValues[i] === valueToTestAgainst) {
|
|
214
|
+
hasMatch = true;
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return hasMatch;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
exports.IAMAuthorizationService = IAMAuthorizationService;
|
|
222
|
+
//# sourceMappingURL=iam.authorization.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iam.authorization.service.js","sourceRoot":"","sources":["../../../src/services/authorization/iam.authorization.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAQsB;AAEtB,0DAA8D;AAE9D,0DAAkC;AAClC,iCAAgD;AAQhD,MAAa,uBAKX,SAAQ,0BAKT;IACC,YACY,qCAAmF,EACnF,iBAA2B,CAAC,mBAAY,CAAC,IAAI,CAAC,EAC9C,mCAGT;QAED,KAAK,CAAC,qCAAqC,EAAE,cAAc,EAAE,mCAAmC,CAAC,CAAC;QAPxF,0CAAqC,GAArC,qCAAqC,CAA8C;QACnF,mBAAc,GAAd,cAAc,CAAgC;QAC9C,wCAAmC,GAAnC,mCAAmC,CAG5C;IAGH,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,mBAAsE,EACtE,SAAwB,EACxB,IAAgC;QAKhC,MAAM,gBAAgB,GAAG,mBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA2B,CAAC;QAC7D,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,oBAAoB,GAAkB,EAAE,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;YAC/G,MAAM,aAAa,GAAG,kBAAkB,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC;YACnF,MAAM,qBAAqB,GAAG,mBAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,MAAM,yBAAyB,GAAkB,EAAE,CAAC;YACpD,SAAS,GAAG,IAAI,CAAC;YACjB,IAAI,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC7D,MAAM,MAAM,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;gBACjG,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBACzB,yBAAyB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7C,IAAA,yBAAS,EAAC,qBAAqB,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;YACD,IAAI,kBAAkB,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,CAAC;gBACjE,MAAM,MAAM,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;gBACnG,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBACzB,yBAAyB,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;oBAC3C,IAAA,yBAAS,EAAC,qBAAqB,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1F,CAAC;YACH,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;oBAC3C,IACE,CAAC,uBAAuB,CAAC,SAAS,CAChC,IAAA,yBAAS,EAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,EACvG,kBAAkB,CAAC,SAAS,CAAC,CAC9B,EACD,CAAC;wBACD,SAAS,GAAG,KAAK,CAAC;wBAClB,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,aAAa,IAAI,kBAAkB,EAAE,CAAC;gBACxC,MAAM,eAAe,GAAG,IAAA,yBAAS,EAAC,qBAAqB,EAAE,kBAAkB,EAAE;oBAC3E,2BAA2B,EAAE,IAAI;iBAClC,CAAC,CAAC;gBACH,MAAM,cAAc,GAAG,IAAA,yBAAS,EAAC,IAAI,EAAE,aAAa,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7F,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,CAAC;oBACpF,SAAS,GAAG,KAAK,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,MAAM,aAAa,GAAc,EAAE,CAAC;gBACpC,MAAM,iBAAiB,GAAG,eAAe,YAAY,KAAK,CAAC;gBAC3D,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBAC7E,MAAM,mBAAmB,GAAG,cAAc,YAAY,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;gBAChG,YAAY,CAAC,OAAO,CAAC,CAAC,WAAoB,EAAE,EAAE;oBAC5C,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;oBACrF,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;wBACpC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;wBAClD,IAAI,UAAU,GAAG,KAAK,CAAC;wBACvB,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;4BACpC,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;4BACvC,IAAI,kBAAkB,KAAK,OAAO,EAAE,CAAC;gCACnC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gCAC5B,UAAU,GAAG,IAAI,CAAC;gCAClB,MAAM;4BACR,CAAC;wBACH,CAAC;wBACD,IAAI,UAAU,EAAE,CAAC;4BACf,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;oBAC1B,SAAS,GAAG,KAAK,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,IAAI,iBAAiB,EAAE,CAAC;oBACtB,yBAAyB,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC;oBAC9D,IAAA,yBAAS,EAAC,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxG,CAAC;YACH,CAAC;YACD,oBAAoB,GAAG,IAAA,sBAAK,EAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;YAC9E,MAAM;QACR,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,WAAoB;QAC7C,MAAM,MAAM,GAAG;YACb,WAAW;YACX,QAAQ,CAAC,WAAqB,EAAE,EAAE,CAAC;YACnC,UAAU,CAAC,WAAqB,CAAC;SAClC,CAAC;QAEF,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEK,sBAAsB,CAC1B,UAAkB,EAClB,yBAAsE;;YAEtE,MAAM,EACJ,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAC1B,GAAG,MAAM,IAAI,CAAC,IAAI,iCACd,CAAC,yBAAyB,IAAI,EAAE,CAAC,KACpC,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,gCAAyB,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,EAC9E,OAAO,EAAE,IAAI,IACb,CAAC;YACH,MAAM,iBAAiB,GAA+B,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;YAC/E,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC;YACvD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC1B,gBAAgB,CAAC,IAAI,CAAC,EAAY,CAAC,GAAG,IAAI,CAAC;oBAC3C,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACrC,IAAI,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBACzC,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;wBACxB,iBAAiB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;oBACvC,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;wBACvB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAY,CAAC,GAAG,IAAI,CAAC;wBACxC,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBAChC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;wBAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;4BACX,KAAK,GAAG,EAAE,CAAC;4BACX,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;wBACzB,CAAC;wBACD,KAAK,CAAC,IAAI,CAAC,EAAY,CAAC,GAAG,IAAI,CAAC;oBAClC,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,iBAAiB,CAAC;QAC3B,CAAC;KAAA;IAED,MAAM,CAAC,gBAAgB,CAAC,KAAoB,EAAE,MAAqB;QACjE,MAAM,YAAY,GAAG,mBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,SAAS,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,aAAa,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YACpF,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,aAAa,GAAc,EAAE,CAAC;YAClC,MAAM,WAAW,GAAc,EAAE,CAAC;YAClC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,aAAa,GAAG,KAAK,CAAC;gBACtB,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBACnC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBACvF,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC;oBACrC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;oBACnD,IAAI,WAAW,GAAG,KAAK,CAAC;oBACxB,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;wBAC9B,IAAI,uBAAuB,CAAC,SAAS,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC5E,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;4BAC/B,WAAW,GAAG,IAAI,CAAC;4BACnB,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBACxB,IAAA,yBAAS,EAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrF,SAAS;YACX,CAAC;YACD,IAAA,yBAAS,EAAC,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;gBAC9E,2BAA2B,EAAE,IAAI;aAClC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,WAAoB,EAAE,kBAA2B;QAChE,IACE,OAAO,WAAW,KAAK,QAAQ;YAC/B,OAAO,kBAAkB,KAAK,QAAQ;YACtC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YACpC,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAChE,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACzF,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACrF,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;YACpC,IAAI,mBAAmB,CAAC,CAAC,CAAC,KAAK,kBAAkB,EAAE,CAAC;gBAClD,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA/OD,0DA+OC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./iam.authorization.definitions"), exports);
|
|
18
|
+
__exportStar(require("./iam.authorization.service"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/authorization/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD;AAChD,8DAA4C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./authentication"), exports);
|
|
18
|
+
__exportStar(require("./authenticationLocal"), exports);
|
|
19
|
+
__exportStar(require("./authorization"), exports);
|
|
20
|
+
__exportStar(require("./tokenManager"), exports);
|
|
21
|
+
__exportStar(require("./users"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,wDAAsC;AACtC,kDAAgC;AAChC,iDAA+B;AAC/B,0CAAwB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { DomainCreateOptions } from '@node-c/core';
|
|
2
|
+
export type DecodedTokenContent<TokenEntityFields> = {
|
|
3
|
+
exp?: number;
|
|
4
|
+
iat: number;
|
|
5
|
+
data?: TokenEntityFields;
|
|
6
|
+
};
|
|
7
|
+
export type TokenEntity<TokenEntityFields extends object> = {
|
|
8
|
+
token: string;
|
|
9
|
+
type: TokenType;
|
|
10
|
+
} & TokenEntityFields;
|
|
11
|
+
export type TokenManagerCreateData<TokenEntityFields extends object> = Partial<Omit<TokenEntity<TokenEntityFields>, 'token'>>;
|
|
12
|
+
export type TokenManagerCreateOptions = {
|
|
13
|
+
expiresInMinutes?: number;
|
|
14
|
+
identifierDataField?: string;
|
|
15
|
+
persist?: boolean;
|
|
16
|
+
purgeOldFromPersistance?: boolean;
|
|
17
|
+
ttl?: number;
|
|
18
|
+
} & DomainCreateOptions;
|
|
19
|
+
export declare enum TokenType {
|
|
20
|
+
Access = "access",
|
|
21
|
+
Refresh = "refresh"
|
|
22
|
+
}
|
|
23
|
+
export interface VerifyAccessTokenOptions {
|
|
24
|
+
deleteFromStoreIfExpired?: boolean;
|
|
25
|
+
identifierDataField?: string;
|
|
26
|
+
newTokenExpiresInMinutes?: number;
|
|
27
|
+
persistNewToken?: boolean;
|
|
28
|
+
purgeStoreOnRenew?: boolean;
|
|
29
|
+
refreshToken?: string;
|
|
30
|
+
refreshTokenAccessTokenIdentifierDataField?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface VerifyAccessTokenReturnData<TokenEntityFields> {
|
|
33
|
+
content?: DecodedTokenContent<TokenEntityFields>;
|
|
34
|
+
newToken?: string;
|
|
35
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TokenType = void 0;
|
|
4
|
+
var TokenType;
|
|
5
|
+
(function (TokenType) {
|
|
6
|
+
TokenType["Access"] = "access";
|
|
7
|
+
TokenType["Refresh"] = "refresh";
|
|
8
|
+
})(TokenType || (exports.TokenType = TokenType = {}));
|
|
9
|
+
//# sourceMappingURL=iam.tokenManager.definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iam.tokenManager.definitions.js","sourceRoot":"","sources":["../../../src/services/tokenManager/iam.tokenManager.definitions.ts"],"names":[],"mappings":";;;AAyBA,IAAY,SAKX;AALD,WAAY,SAAS;IAEnB,8BAAiB,CAAA;IAEjB,gCAAmB,CAAA;AACrB,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ConfigProviderService, DomainCreateResult, DomainEntityService, PersistanceEntityService } from '@node-c/core';
|
|
2
|
+
import { DecodedTokenContent, TokenEntity, TokenManagerCreateData, TokenManagerCreateOptions, VerifyAccessTokenOptions, VerifyAccessTokenReturnData } from './iam.tokenManager.definitions';
|
|
3
|
+
export declare class IAMTokenManagerService<TokenEntityFields extends object> extends DomainEntityService<TokenEntity<TokenEntityFields>, PersistanceEntityService<TokenEntity<TokenEntityFields>>> {
|
|
4
|
+
protected configProvider: ConfigProviderService;
|
|
5
|
+
protected moduleName: string;
|
|
6
|
+
protected persistanceEntityService: PersistanceEntityService<TokenEntity<TokenEntityFields>>;
|
|
7
|
+
constructor(configProvider: ConfigProviderService, moduleName: string, persistanceEntityService: PersistanceEntityService<TokenEntity<TokenEntityFields>>);
|
|
8
|
+
create(data: TokenManagerCreateData<TokenEntityFields>, options: TokenManagerCreateOptions): Promise<DomainCreateResult<TokenEntity<TokenEntityFields>>>;
|
|
9
|
+
verifyAccessToken(token: string, options?: VerifyAccessTokenOptions): Promise<VerifyAccessTokenReturnData<TokenEntityFields>>;
|
|
10
|
+
protected verify(token: string, secret: string): Promise<{
|
|
11
|
+
content?: DecodedTokenContent<TokenEntityFields>;
|
|
12
|
+
error?: unknown;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
45
|
+
var t = {};
|
|
46
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
47
|
+
t[p] = s[p];
|
|
48
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
49
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
50
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
51
|
+
t[p[i]] = s[p[i]];
|
|
52
|
+
}
|
|
53
|
+
return t;
|
|
54
|
+
};
|
|
55
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
+
exports.IAMTokenManagerService = void 0;
|
|
57
|
+
const core_1 = require("@node-c/core");
|
|
58
|
+
const general_tools_1 = require("@ramster/general-tools");
|
|
59
|
+
const jwt = __importStar(require("jsonwebtoken"));
|
|
60
|
+
const iam_tokenManager_definitions_1 = require("./iam.tokenManager.definitions");
|
|
61
|
+
class IAMTokenManagerService extends core_1.DomainEntityService {
|
|
62
|
+
constructor(configProvider, moduleName, persistanceEntityService) {
|
|
63
|
+
super(persistanceEntityService, ['create']);
|
|
64
|
+
this.configProvider = configProvider;
|
|
65
|
+
this.moduleName = moduleName;
|
|
66
|
+
this.persistanceEntityService = persistanceEntityService;
|
|
67
|
+
}
|
|
68
|
+
create(data, options) {
|
|
69
|
+
const _super = Object.create(null, {
|
|
70
|
+
create: { get: () => super.create }
|
|
71
|
+
});
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
const { configProvider, moduleName, persistanceEntityService } = this;
|
|
74
|
+
const moduleConfig = configProvider.config.domain[moduleName];
|
|
75
|
+
const { type } = data, tokenData = __rest(data, ["type"]);
|
|
76
|
+
const { expiresInMinutes, identifierDataField, persist, purgeOldFromPersistance } = options;
|
|
77
|
+
const signOptions = {};
|
|
78
|
+
let secret;
|
|
79
|
+
if (type === iam_tokenManager_definitions_1.TokenType.Access) {
|
|
80
|
+
secret = moduleConfig.jwtAccessSecret;
|
|
81
|
+
if (expiresInMinutes) {
|
|
82
|
+
signOptions.expiresIn = expiresInMinutes * 60;
|
|
83
|
+
}
|
|
84
|
+
else if (moduleConfig.accessTokenExpiryTimeInMinutes) {
|
|
85
|
+
signOptions.expiresIn = moduleConfig.accessTokenExpiryTimeInMinutes * 60;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (type === iam_tokenManager_definitions_1.TokenType.Refresh) {
|
|
89
|
+
secret = moduleConfig.jwtRefreshSecret;
|
|
90
|
+
if (expiresInMinutes) {
|
|
91
|
+
signOptions.expiresIn = expiresInMinutes * 60;
|
|
92
|
+
}
|
|
93
|
+
else if (moduleConfig.refreshTokenExpiryTimeInMinutes) {
|
|
94
|
+
signOptions.expiresIn = moduleConfig.refreshTokenExpiryTimeInMinutes * 60;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
throw new core_1.ApplicationError(`[TokenManager.create]: Invalid token type - "${type}".`);
|
|
99
|
+
}
|
|
100
|
+
const token = yield new Promise((resolve, reject) => {
|
|
101
|
+
jwt.sign({ data }, secret, signOptions, (err, token) => {
|
|
102
|
+
if (err) {
|
|
103
|
+
console.error(err);
|
|
104
|
+
reject(new core_1.ApplicationError('Failed to sign token.'));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
resolve(token);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
const objectToSave = Object.assign(Object.assign({}, tokenData), { token, type });
|
|
111
|
+
if (persist && persistanceEntityService) {
|
|
112
|
+
if (purgeOldFromPersistance && identifierDataField) {
|
|
113
|
+
const identifierValue = (0, general_tools_1.getNested)(data, identifierDataField);
|
|
114
|
+
if (typeof identifierValue !== 'undefined' && typeof identifierValue !== 'object') {
|
|
115
|
+
yield persistanceEntityService.delete({
|
|
116
|
+
filters: { [identifierDataField]: identifierValue }
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
yield _super.create.call(this, objectToSave, { ttl: signOptions.expiresIn });
|
|
121
|
+
}
|
|
122
|
+
return { result: objectToSave };
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
verifyAccessToken(token, options) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
const { configProvider, moduleName, persistanceEntityService } = this;
|
|
128
|
+
const moduleConfig = configProvider.config.domain[moduleName];
|
|
129
|
+
const { deleteFromStoreIfExpired, identifierDataField, newTokenExpiresInMinutes, persistNewToken, purgeStoreOnRenew, refreshToken, refreshTokenAccessTokenIdentifierDataField } = options || {};
|
|
130
|
+
const { content, error } = yield this.verify(token, moduleConfig.jwtAccessSecret);
|
|
131
|
+
let forceRenew = true;
|
|
132
|
+
let newToken;
|
|
133
|
+
if (error) {
|
|
134
|
+
let errorToThrow;
|
|
135
|
+
let throwError = true;
|
|
136
|
+
if (error === 'Token expired' && identifierDataField && (content === null || content === void 0 ? void 0 : content.data) && persistanceEntityService) {
|
|
137
|
+
if (refreshToken && refreshTokenAccessTokenIdentifierDataField) {
|
|
138
|
+
const { content: refreshTokenContent, error: refreshTokenError } = yield this.verify(refreshToken, moduleConfig.jwtRefreshSecret);
|
|
139
|
+
if (refreshTokenError) {
|
|
140
|
+
errorToThrow = refreshTokenError;
|
|
141
|
+
}
|
|
142
|
+
if (!refreshTokenContent) {
|
|
143
|
+
errorToThrow = new core_1.ApplicationError('Empty refresh token.');
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const refreshTokenCheckValue = (0, general_tools_1.getNested)(content.data, refreshTokenAccessTokenIdentifierDataField);
|
|
147
|
+
if (refreshTokenCheckValue !== refreshToken) {
|
|
148
|
+
errorToThrow = new core_1.ApplicationError('Mismatched refresh token.');
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
forceRenew = false;
|
|
152
|
+
throwError = false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
if (deleteFromStoreIfExpired) {
|
|
158
|
+
const identifierValue = (0, general_tools_1.getNested)(content.data, identifierDataField);
|
|
159
|
+
if (typeof identifierValue !== 'undefined' && typeof identifierValue !== 'object') {
|
|
160
|
+
yield persistanceEntityService.delete({
|
|
161
|
+
filters: { [identifierDataField]: identifierValue }
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
errorToThrow = new core_1.ApplicationError('Expired access token.');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (throwError) {
|
|
169
|
+
throw errorToThrow || error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if ((content === null || content === void 0 ? void 0 : content.data) && forceRenew) {
|
|
173
|
+
const tokenData = Object.assign(Object.assign({}, content.data), { type: iam_tokenManager_definitions_1.TokenType.Access });
|
|
174
|
+
if (refreshToken && refreshTokenAccessTokenIdentifierDataField) {
|
|
175
|
+
tokenData[refreshTokenAccessTokenIdentifierDataField] = refreshToken;
|
|
176
|
+
}
|
|
177
|
+
const { result } = yield this.create(tokenData, {
|
|
178
|
+
expiresInMinutes: newTokenExpiresInMinutes,
|
|
179
|
+
identifierDataField,
|
|
180
|
+
persist: persistNewToken,
|
|
181
|
+
purgeOldFromPersistance: purgeStoreOnRenew
|
|
182
|
+
});
|
|
183
|
+
newToken = result.token;
|
|
184
|
+
}
|
|
185
|
+
return { content, newToken };
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
verify(token, secret) {
|
|
189
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
190
|
+
const data = yield new Promise(resolve => {
|
|
191
|
+
jwt.verify(token, secret, (err, decoded) => {
|
|
192
|
+
if (err) {
|
|
193
|
+
resolve({ content: decoded, error: err });
|
|
194
|
+
}
|
|
195
|
+
resolve({ content: decoded });
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
return data;
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
exports.IAMTokenManagerService = IAMTokenManagerService;
|
|
203
|
+
//# sourceMappingURL=iam.tokenManager.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iam.tokenManager.service.js","sourceRoot":"","sources":["../../../src/services/tokenManager/iam.tokenManager.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./iam.tokenManager.definitions"), exports);
|
|
18
|
+
__exportStar(require("./iam.tokenManager.service"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/tokenManager/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,6DAA2C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { GenericObject } from '@node-c/core';
|
|
2
|
+
import { UserAuthType, UserMFAType } from '../authentication';
|
|
3
|
+
import { AuthorizationPoint } from '../authorization';
|
|
4
|
+
export interface CreateAccessTokenOptions<AuthData = unknown> {
|
|
5
|
+
auth: {
|
|
6
|
+
mfaType?: UserMFAType;
|
|
7
|
+
type: UserAuthType;
|
|
8
|
+
} & AuthData;
|
|
9
|
+
filters: GenericObject;
|
|
10
|
+
mainFilterField: string;
|
|
11
|
+
rememberUser?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface CreateAccessTokenReturnData<UserData> {
|
|
14
|
+
accessToken: string;
|
|
15
|
+
refreshToken: string;
|
|
16
|
+
user: UserData;
|
|
17
|
+
}
|
|
18
|
+
export interface GetUserWithPermissionsDataOptions {
|
|
19
|
+
keepPassword?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export type UserWithPermissionsData<UserData, AuthorizationPointId> = {
|
|
22
|
+
currentAuthorizationPoints: GenericObject<AuthorizationPoint<AuthorizationPointId>>;
|
|
23
|
+
} & UserData;
|
|
24
|
+
export interface UserTokenEnityFields<UserId = unknown> {
|
|
25
|
+
refreshToken?: string;
|
|
26
|
+
userId: UserId;
|
|
27
|
+
}
|
|
28
|
+
export declare enum UserTokenUserIdentifier {
|
|
29
|
+
FieldName = "userId"
|
|
30
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserTokenUserIdentifier = void 0;
|
|
4
|
+
var UserTokenUserIdentifier;
|
|
5
|
+
(function (UserTokenUserIdentifier) {
|
|
6
|
+
UserTokenUserIdentifier["FieldName"] = "userId";
|
|
7
|
+
})(UserTokenUserIdentifier || (exports.UserTokenUserIdentifier = UserTokenUserIdentifier = {}));
|
|
8
|
+
//# sourceMappingURL=iam.users.definitions.js.map
|