@node-c/domain-iam 1.0.0-alpha9 → 1.0.0-beta0

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.
Files changed (104) hide show
  1. package/dist/common/definitions/common.constants.d.ts +6 -1
  2. package/dist/common/definitions/common.constants.js +5 -0
  3. package/dist/common/definitions/common.constants.js.map +1 -1
  4. package/dist/module/iam.module.js.map +1 -1
  5. package/dist/services/authentication/iam.authentication.definitions.d.ts +79 -16
  6. package/dist/services/authentication/iam.authentication.definitions.js +6 -9
  7. package/dist/services/authentication/iam.authentication.definitions.js.map +1 -1
  8. package/dist/services/authentication/iam.authentication.service.d.ts +10 -3
  9. package/dist/services/authentication/iam.authentication.service.js +30 -2
  10. package/dist/services/authentication/iam.authentication.service.js.map +1 -1
  11. package/dist/services/authenticationOAuth2/iam.authenticationOAuth2.definitions.d.ts +38 -0
  12. package/dist/services/{authenticationLocal/iam.authenticationLocal.definitions.js → authenticationOAuth2/iam.authenticationOAuth2.definitions.js} +1 -1
  13. package/dist/services/authenticationOAuth2/iam.authenticationOAuth2.definitions.js.map +1 -0
  14. package/dist/services/authenticationOAuth2/iam.authenticationOAuth2.service.d.ts +24 -0
  15. package/dist/services/authenticationOAuth2/iam.authenticationOAuth2.service.js +299 -0
  16. package/dist/services/authenticationOAuth2/iam.authenticationOAuth2.service.js.map +1 -0
  17. package/dist/services/authenticationOAuth2/index.d.ts +2 -0
  18. package/dist/services/authenticationOAuth2/index.js +19 -0
  19. package/dist/services/authenticationOAuth2/index.js.map +1 -0
  20. package/dist/services/authenticationUserLocal/iam.authenticationUserLocal.definitions.d.ts +12 -0
  21. package/dist/services/authenticationUserLocal/iam.authenticationUserLocal.definitions.js +3 -0
  22. package/dist/services/authenticationUserLocal/iam.authenticationUserLocal.definitions.js.map +1 -0
  23. package/dist/services/authenticationUserLocal/iam.authenticationUserLocal.service.d.ts +14 -0
  24. package/dist/services/authenticationUserLocal/iam.authenticationUserLocal.service.js +141 -0
  25. package/dist/services/authenticationUserLocal/iam.authenticationUserLocal.service.js.map +1 -0
  26. package/dist/services/authenticationUserLocal/index.d.ts +2 -0
  27. package/dist/services/{authenticationLocal → authenticationUserLocal}/index.js +2 -2
  28. package/dist/services/authenticationUserLocal/index.js.map +1 -0
  29. package/dist/services/authorization/iam.authorization.definitions.d.ts +33 -23
  30. package/dist/services/authorization/iam.authorization.definitions.js +7 -0
  31. package/dist/services/authorization/iam.authorization.definitions.js.map +1 -1
  32. package/dist/services/authorization/iam.authorization.service.d.ts +28 -13
  33. package/dist/services/authorization/iam.authorization.service.js +231 -125
  34. package/dist/services/authorization/iam.authorization.service.js.map +1 -1
  35. package/dist/services/index.d.ts +4 -2
  36. package/dist/services/index.js +4 -2
  37. package/dist/services/index.js.map +1 -1
  38. package/dist/services/mfa/iam.mfa.definitions.d.ts +21 -0
  39. package/dist/services/mfa/iam.mfa.definitions.js +8 -0
  40. package/dist/services/mfa/iam.mfa.definitions.js.map +1 -0
  41. package/dist/services/mfa/iam.mfa.service.d.ts +9 -0
  42. package/dist/services/mfa/iam.mfa.service.js +31 -0
  43. package/dist/services/mfa/iam.mfa.service.js.map +1 -0
  44. package/dist/services/mfa/index.d.ts +2 -0
  45. package/dist/services/{users → mfa}/index.js +2 -2
  46. package/dist/services/mfa/index.js.map +1 -0
  47. package/dist/services/tokenManager/iam.tokenManager.definitions.d.ts +14 -3
  48. package/dist/services/tokenManager/iam.tokenManager.definitions.js.map +1 -1
  49. package/dist/services/tokenManager/iam.tokenManager.service.d.ts +23 -9
  50. package/dist/services/tokenManager/iam.tokenManager.service.js +111 -43
  51. package/dist/services/tokenManager/iam.tokenManager.service.js.map +1 -1
  52. package/dist/services/userManager/iam.userManager.definitions.d.ts +45 -0
  53. package/dist/services/userManager/iam.userManager.definitions.js +8 -0
  54. package/dist/services/userManager/iam.userManager.definitions.js.map +1 -0
  55. package/dist/services/userManager/iam.userManager.service.d.ts +32 -0
  56. package/dist/services/userManager/iam.userManager.service.js +331 -0
  57. package/dist/services/userManager/iam.userManager.service.js.map +1 -0
  58. package/dist/services/userManager/index.d.ts +2 -0
  59. package/dist/services/userManager/index.js +19 -0
  60. package/dist/services/userManager/index.js.map +1 -0
  61. package/package.json +9 -8
  62. package/src/common/definitions/common.constants.ts +14 -0
  63. package/src/common/definitions/index.ts +1 -0
  64. package/src/index.ts +3 -0
  65. package/src/module/iam.definitions.ts +15 -0
  66. package/src/module/iam.module.ts +29 -0
  67. package/src/module/index.ts +2 -0
  68. package/src/services/authentication/iam.authentication.definitions.ts +100 -0
  69. package/src/services/authentication/iam.authentication.service.ts +103 -0
  70. package/src/services/authentication/index.ts +2 -0
  71. package/src/services/authenticationOAuth2/iam.authenticationOAuth2.definitions.ts +71 -0
  72. package/src/services/authenticationOAuth2/iam.authenticationOAuth2.service.ts +350 -0
  73. package/src/services/authenticationOAuth2/index.ts +2 -0
  74. package/src/services/authenticationUserLocal/iam.authenticationUserLocal.definitions.ts +29 -0
  75. package/src/services/authenticationUserLocal/iam.authenticationUserLocal.service.ts +171 -0
  76. package/src/services/authenticationUserLocal/index.ts +2 -0
  77. package/src/services/authorization/iam.authorization.definitions.ts +55 -0
  78. package/src/services/authorization/iam.authorization.service.ts +384 -0
  79. package/src/services/authorization/index.ts +2 -0
  80. package/src/services/index.ts +7 -0
  81. package/src/services/mfa/iam.mfa.definitions.ts +28 -0
  82. package/src/services/mfa/iam.mfa.service.ts +38 -0
  83. package/src/services/mfa/index.ts +2 -0
  84. package/src/services/tokenManager/iam.tokenManager.definitions.ts +61 -0
  85. package/src/services/tokenManager/iam.tokenManager.service.ts +290 -0
  86. package/src/services/tokenManager/index.ts +2 -0
  87. package/src/services/userManager/iam.userManager.definitions.ts +73 -0
  88. package/src/services/userManager/iam.userManager.service.ts +461 -0
  89. package/src/services/userManager/index.ts +2 -0
  90. package/dist/services/authenticationLocal/iam.authenticationLocal.definitions.d.ts +0 -11
  91. package/dist/services/authenticationLocal/iam.authenticationLocal.definitions.js.map +0 -1
  92. package/dist/services/authenticationLocal/iam.authenticationLocal.service.d.ts +0 -10
  93. package/dist/services/authenticationLocal/iam.authenticationLocal.service.js +0 -70
  94. package/dist/services/authenticationLocal/iam.authenticationLocal.service.js.map +0 -1
  95. package/dist/services/authenticationLocal/index.d.ts +0 -2
  96. package/dist/services/authenticationLocal/index.js.map +0 -1
  97. package/dist/services/users/iam.users.definitions.d.ts +0 -30
  98. package/dist/services/users/iam.users.definitions.js +0 -8
  99. package/dist/services/users/iam.users.definitions.js.map +0 -1
  100. package/dist/services/users/iam.users.service.d.ts +0 -16
  101. package/dist/services/users/iam.users.service.js +0 -93
  102. package/dist/services/users/iam.users.service.js.map +0 -1
  103. package/dist/services/users/index.d.ts +0 -2
  104. package/dist/services/users/index.js.map +0 -1
@@ -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.authenticationOAuth2.definitions"), exports);
18
+ __exportStar(require("./iam.authenticationOAuth2.service"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/authenticationOAuth2/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,qEAAmD"}
@@ -0,0 +1,12 @@
1
+ import { IAMAuthenticationCompleteData, IAMAuthenticationCompleteOptions, IAMAuthenticationCompleteResult, IAMAuthenticationGetUserCreateAccessTokenConfigResult, IAMAuthenticationInitiateData, IAMAuthenticationInitiateOptions, IAMAuthenticationInitiateResult } from '../authentication';
2
+ export type IAMAuthenticationUserLocalCompleteData = IAMAuthenticationCompleteData;
3
+ export type IAMAuthenticationUserLocalCompleteOptions<Context extends object> = IAMAuthenticationCompleteOptions<Context>;
4
+ export type IAMAuthenticationUserLocalCompleteResult = IAMAuthenticationCompleteResult;
5
+ export type IAMAuthenticationUserLocalGetUserCreateAccessTokenConfigResult = IAMAuthenticationGetUserCreateAccessTokenConfigResult;
6
+ export interface IAMAuthenticationUserLocalInitiateData extends IAMAuthenticationInitiateData {
7
+ password: string;
8
+ }
9
+ export type IAMAuthenticationUserLocalInitiateOptions<Context extends object> = IAMAuthenticationInitiateOptions<{
10
+ password: string;
11
+ } & Context>;
12
+ export type IAMAuthenticationUserLocalInitiateResult = IAMAuthenticationInitiateResult;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=iam.authenticationUserLocal.definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iam.authenticationUserLocal.definitions.js","sourceRoot":"","sources":["../../../src/services/authenticationUserLocal/iam.authenticationUserLocal.definitions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { ConfigProviderService } from '@node-c/core';
2
+ import { IAMAuthenticationUserLocalCompleteData, IAMAuthenticationUserLocalCompleteOptions, IAMAuthenticationUserLocalCompleteResult, IAMAuthenticationUserLocalGetUserCreateAccessTokenConfigResult, IAMAuthenticationUserLocalInitiateData, IAMAuthenticationUserLocalInitiateOptions, IAMAuthenticationUserLocalInitiateResult } from './iam.authenticationUserLocal.definitions';
3
+ import { IAMAuthenticationService } from '../authentication';
4
+ import { IAMMFAService, IAMMFAType } from '../mfa';
5
+ export declare class IAMAuthenticationUserLocalService<CompleteContext extends object, InitiateContext extends object> extends IAMAuthenticationService<CompleteContext, InitiateContext> {
6
+ protected configProvider: ConfigProviderService;
7
+ protected moduleName: string;
8
+ protected serviceName: string;
9
+ protected mfaServices?: Record<IAMMFAType, IAMMFAService<object, object>> | undefined;
10
+ constructor(configProvider: ConfigProviderService, moduleName: string, serviceName: string, mfaServices?: Record<IAMMFAType, IAMMFAService<object, object>> | undefined);
11
+ complete(data: IAMAuthenticationUserLocalCompleteData, options: IAMAuthenticationUserLocalCompleteOptions<CompleteContext>): Promise<IAMAuthenticationUserLocalCompleteResult>;
12
+ getUserCreateAccessTokenConfig(): IAMAuthenticationUserLocalGetUserCreateAccessTokenConfigResult;
13
+ initiate(data: IAMAuthenticationUserLocalInitiateData, options: IAMAuthenticationUserLocalInitiateOptions<InitiateContext>): Promise<IAMAuthenticationUserLocalInitiateResult>;
14
+ }
@@ -0,0 +1,141 @@
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.IAMAuthenticationUserLocalService = void 0;
16
+ const crypto_1 = __importDefault(require("crypto"));
17
+ const core_1 = require("@node-c/core");
18
+ const lodash_1 = __importDefault(require("lodash"));
19
+ const authentication_1 = require("../authentication");
20
+ class IAMAuthenticationUserLocalService extends authentication_1.IAMAuthenticationService {
21
+ constructor(configProvider, moduleName, serviceName, mfaServices) {
22
+ super(configProvider, moduleName);
23
+ this.configProvider = configProvider;
24
+ this.moduleName = moduleName;
25
+ this.serviceName = serviceName;
26
+ this.mfaServices = mfaServices;
27
+ this.isLocal = true;
28
+ }
29
+ complete(data, options) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ const { configProvider, moduleName, mfaServices, serviceName } = this;
32
+ const { defaultUserIdentifierField } = configProvider.config.domain[moduleName];
33
+ const { mfaData, mfaType } = data;
34
+ const { context, mfaOptions } = options;
35
+ const userIdentifierField = options.contextIdentifierField || defaultUserIdentifierField;
36
+ const userIdentifierValue = context[userIdentifierField];
37
+ let mfaUsed = false;
38
+ let mfaValid = false;
39
+ if (mfaType) {
40
+ const mfaService = mfaServices === null || mfaServices === void 0 ? void 0 : mfaServices[mfaType];
41
+ if (!mfaService) {
42
+ console.error(`[${moduleName}][${serviceName}]: Login attempt failed for user "${userIdentifierValue}" - MFA service ${mfaType} not configured.`);
43
+ throw new core_1.ApplicationError('Authentication failed.');
44
+ }
45
+ if (!mfaData) {
46
+ console.error(`[${moduleName}][${serviceName}]: Login attempt failed for user "${userIdentifierValue}" - no MFA data provided.`);
47
+ throw new core_1.ApplicationError('Authentication failed.');
48
+ }
49
+ const mfaResult = yield mfaService.complete(mfaData, Object.assign(Object.assign({}, (mfaOptions || {})), { context }));
50
+ mfaUsed = true;
51
+ mfaValid = mfaResult.valid;
52
+ }
53
+ return { mfaUsed, mfaValid, valid: true };
54
+ });
55
+ }
56
+ getUserCreateAccessTokenConfig() {
57
+ const { configProvider, moduleName, serviceName } = this;
58
+ const moduleConfig = configProvider.config.domain[moduleName];
59
+ const { steps } = moduleConfig.authServiceSettings[serviceName];
60
+ const defaultConfig = {
61
+ [core_1.AppConfigDomainIAMAuthenticationStep.Complete]: {
62
+ cache: {
63
+ settings: {
64
+ cacheFieldName: 'userId',
65
+ inputFieldName: 'options.context.id'
66
+ },
67
+ use: {
68
+ options: { overwrite: true, use: true }
69
+ }
70
+ },
71
+ findUser: true,
72
+ findUserBeforeAuth: true,
73
+ validWithoutUser: false
74
+ },
75
+ [core_1.AppConfigDomainIAMAuthenticationStep.Initiate]: {
76
+ cache: {
77
+ populate: {
78
+ options: [{ cacheFieldName: 'context', inputFieldName: 'options.context' }]
79
+ },
80
+ settings: {
81
+ cacheFieldName: 'userId',
82
+ inputFieldName: 'options.context.id'
83
+ }
84
+ },
85
+ findUser: true,
86
+ findUserBeforeAuth: true,
87
+ validWithoutUser: false
88
+ }
89
+ };
90
+ return lodash_1.default.merge(defaultConfig, steps || {});
91
+ }
92
+ initiate(data, options) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ const { configProvider, moduleName, mfaServices, serviceName } = this;
95
+ const moduleConfig = configProvider.config.domain[moduleName];
96
+ const { secretKeyHMACAlgorithm, hashingSecret } = moduleConfig.authServiceSettings[serviceName].secretKey;
97
+ const { mfaData, mfaType, password: authPassword } = data;
98
+ const { context, context: { password: userPassword }, mfaOptions } = options;
99
+ const userIdentifierField = options.contextIdentifierField || moduleConfig.defaultUserIdentifierField;
100
+ const userIdentifierValue = context[userIdentifierField];
101
+ let mfaUsed = false;
102
+ let mfaValid = false;
103
+ let wrongPassword = false;
104
+ if (!secretKeyHMACAlgorithm || !hashingSecret || !userPassword) {
105
+ wrongPassword = true;
106
+ console.error(`[${moduleName}][${serviceName}]: secretKeyHMACAlgorithm, hashingSecret and/or userPassword not provided.`);
107
+ }
108
+ else {
109
+ const computedPassword = crypto_1.default
110
+ .createHmac(secretKeyHMACAlgorithm, hashingSecret)
111
+ .update(`${authPassword}`)
112
+ .digest('hex')
113
+ .toString();
114
+ if (computedPassword !== userPassword) {
115
+ wrongPassword = true;
116
+ }
117
+ }
118
+ if (wrongPassword) {
119
+ console.error(`[${moduleName}][${serviceName}]: Login attempt failed for user "${userIdentifierValue}" - wrong password.`);
120
+ throw new core_1.ApplicationError('Authentication failed.');
121
+ }
122
+ if (mfaType) {
123
+ const mfaService = mfaServices === null || mfaServices === void 0 ? void 0 : mfaServices[mfaType];
124
+ if (!mfaService) {
125
+ console.error(`[${moduleName}][${serviceName}]: Login attempt failed for user "${userIdentifierValue}" - MFA service ${mfaType} not configured.`);
126
+ throw new core_1.ApplicationError('Authentication failed.');
127
+ }
128
+ if (!mfaData) {
129
+ console.error(`[${moduleName}][${serviceName}]: Login attempt failed for user "${userIdentifierValue}" - no MFA data provided.`);
130
+ throw new core_1.ApplicationError('Authentication failed.');
131
+ }
132
+ const mfaResult = yield mfaService.initiate(mfaData, Object.assign(Object.assign({}, (mfaOptions || {})), { context }));
133
+ mfaUsed = true;
134
+ mfaValid = mfaResult.valid;
135
+ }
136
+ return { mfaUsed, mfaValid, valid: true };
137
+ });
138
+ }
139
+ }
140
+ exports.IAMAuthenticationUserLocalService = IAMAuthenticationUserLocalService;
141
+ //# sourceMappingURL=iam.authenticationUserLocal.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iam.authenticationUserLocal.service.js","sourceRoot":"","sources":["../../../src/services/authenticationUserLocal/iam.authenticationUserLocal.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './iam.authenticationUserLocal.definitions';
2
+ export * from './iam.authenticationUserLocal.service';
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./iam.authenticationLocal.definitions"), exports);
18
- __exportStar(require("./iam.authenticationLocal.service"), exports);
17
+ __exportStar(require("./iam.authenticationUserLocal.definitions"), exports);
18
+ __exportStar(require("./iam.authenticationUserLocal.service"), exports);
19
19
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/authenticationUserLocal/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4EAA0D;AAC1D,wEAAsD"}
@@ -1,37 +1,47 @@
1
1
  import { GenericObject } from '@node-c/core';
2
+ export declare enum AuthorizationCheckErrorCode {
3
+ FGANoAccessToModule = "FGA_NO_ACCESS",
4
+ RBACNoAccessToModule = "RBAC_NO_ACCESS_TO_MODULE",
5
+ RBACNoAccessToResource = "RBAC_NO_ACCESS_TO_RESOURCE"
6
+ }
2
7
  export interface AuthorizationPoint<Id> {
3
8
  allowedInputData?: GenericObject;
4
- controllerNames?: string[];
9
+ allowedOutputData?: GenericObject;
5
10
  forbiddenInputData?: GenericObject;
6
- handlerNames?: string[];
11
+ forbiddenOutputData?: GenericObject;
7
12
  id: Id;
8
13
  inputDataFieldName?: string;
9
- moduleNames?: string[];
14
+ moduleName: string;
10
15
  name: string;
11
16
  requiredStaticData?: GenericObject;
17
+ resources?: string[];
18
+ resourceContext?: string;
12
19
  userFieldName?: string;
13
- userTypes: GenericObject[];
14
20
  }
15
- export interface AuthorizationData<AuthorizationPointId> {
16
- __all: {
17
- __all: {
18
- [authorizationPointId: string | number]: AuthorizationPoint<AuthorizationPointId>;
19
- };
20
- [handlerName: string]: {
21
- [authorizationPointId: string | number]: AuthorizationPoint<AuthorizationPointId>;
22
- };
23
- };
24
- [controllerName: string]: {
25
- __all: {
26
- [authorizationPointId: string | number]: AuthorizationPoint<AuthorizationPointId>;
27
- };
28
- [handlerName: string]: {
29
- [authorizationPointId: string | number]: AuthorizationPoint<AuthorizationPointId>;
30
- };
31
- };
21
+ export interface AuthorizationStaticCheckAccessOptions {
22
+ moduleName: string;
23
+ resource?: string;
24
+ resourceContext?: string;
25
+ }
26
+ export interface AuthorizationStaticCheckAccessResult {
27
+ authorizationPoints: GenericObject<AuthorizationPoint<unknown>>;
28
+ errorCode?: AuthorizationCheckErrorCode;
29
+ hasAccess: boolean;
30
+ inputDataToBeMutated: GenericObject;
31
+ noMatchForResource: boolean;
32
32
  }
33
33
  export interface AuthorizationUser<AuthorizationPointId> {
34
- currentAuthorizationPoints: {
35
- [authorizationPointId: string | number]: AuthorizationPoint<AuthorizationPointId>;
34
+ currentAuthorizationPoints: GenericObject<AuthorizationPoint<AuthorizationPointId>>;
35
+ }
36
+ export interface AuthorizeApiKeyData {
37
+ apiKey: string;
38
+ signature?: string;
39
+ signatureContent?: string;
40
+ }
41
+ export interface AuthorizeApiKeyOptions {
42
+ config: {
43
+ apiKey?: string;
44
+ apiSecret?: string;
45
+ apiSecretAlgorithm?: string;
36
46
  };
37
47
  }
@@ -1,3 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthorizationCheckErrorCode = void 0;
4
+ var AuthorizationCheckErrorCode;
5
+ (function (AuthorizationCheckErrorCode) {
6
+ AuthorizationCheckErrorCode["FGANoAccessToModule"] = "FGA_NO_ACCESS";
7
+ AuthorizationCheckErrorCode["RBACNoAccessToModule"] = "RBAC_NO_ACCESS_TO_MODULE";
8
+ AuthorizationCheckErrorCode["RBACNoAccessToResource"] = "RBAC_NO_ACCESS_TO_RESOURCE";
9
+ })(AuthorizationCheckErrorCode || (exports.AuthorizationCheckErrorCode = AuthorizationCheckErrorCode = {}));
3
10
  //# sourceMappingURL=iam.authorization.definitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"iam.authorization.definitions.js","sourceRoot":"","sources":["../../../src/services/authorization/iam.authorization.definitions.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"iam.authorization.definitions.js","sourceRoot":"","sources":["../../../src/services/authorization/iam.authorization.definitions.ts"],"names":[],"mappings":";;;AAEA,IAAY,2BAOX;AAPD,WAAY,2BAA2B;IAErC,oEAAqC,CAAA;IAErC,gFAAiD,CAAA;IAEjD,oFAAqD,CAAA;AACvD,CAAC,EAPW,2BAA2B,2CAA3B,2BAA2B,QAOtC"}
@@ -1,18 +1,33 @@
1
- import { DomainBaseOptionsForAdditionalServicesFull, DomainEntityService, DomainEntityServiceDefaultData, GenericObject, PersistanceEntityService } from '@node-c/core';
2
- import { AuthorizationData, AuthorizationUser, AuthorizationPoint as BaseAuthorizationPoint } from './iam.authorization.definitions';
3
- export declare class IAMAuthorizationService<AuthorizationPoint extends BaseAuthorizationPoint<unknown>, Data extends DomainEntityServiceDefaultData<Partial<AuthorizationPoint>> = DomainEntityServiceDefaultData<Partial<AuthorizationPoint>>> extends DomainEntityService<AuthorizationPoint, PersistanceEntityService<AuthorizationPoint>, Data, Record<string, PersistanceEntityService<Partial<AuthorizationPoint>>> | undefined> {
4
- protected persistanceAuthorizationPointsService: PersistanceEntityService<AuthorizationPoint>;
1
+ import { DataEntityService, DomainEntityService, DomainEntityServiceDefaultData, GenericObject } from '@node-c/core';
2
+ import { AuthorizationStaticCheckAccessOptions, AuthorizationStaticCheckAccessResult, AuthorizationUser, AuthorizeApiKeyData, AuthorizeApiKeyOptions, AuthorizationPoint as BaseAuthorizationPoint } from './iam.authorization.definitions';
3
+ import { DecodedTokenContent, IAMTokenManagerService } from '../tokenManager';
4
+ export declare class IAMAuthorizationService<AuthorizationPoint extends BaseAuthorizationPoint<unknown> = BaseAuthorizationPoint<unknown>, Data extends DomainEntityServiceDefaultData<Partial<AuthorizationPoint>> = DomainEntityServiceDefaultData<Partial<AuthorizationPoint>>, TokenManager extends IAMTokenManagerService<object> = IAMTokenManagerService<object>> extends DomainEntityService<AuthorizationPoint, DataEntityService<AuthorizationPoint>, Data, Record<string, DataEntityService<Partial<AuthorizationPoint>>> | undefined> {
5
+ protected dataAuthorizationPointsService: DataEntityService<AuthorizationPoint>;
5
6
  protected defaultMethods: string[];
6
- protected additionalPersistanceEntityServices?: Record<string, PersistanceEntityService<Partial<AuthorizationPoint>>> | undefined;
7
- constructor(persistanceAuthorizationPointsService: PersistanceEntityService<AuthorizationPoint>, defaultMethods?: string[], additionalPersistanceEntityServices?: Record<string, PersistanceEntityService<Partial<AuthorizationPoint>>> | undefined);
8
- static checkAccess(authorizationPoints: {
9
- [id: number]: BaseAuthorizationPoint<unknown>;
10
- }, inputData: GenericObject, user: AuthorizationUser<unknown>): {
11
- hasAccess: boolean;
12
- inputDataToBeMutated: GenericObject;
13
- };
7
+ protected additionalDataEntityServices?: GenericObject<DataEntityService<Partial<AuthorizationPoint>>> | undefined;
8
+ protected tokenManager?: TokenManager | undefined;
9
+ constructor(dataAuthorizationPointsService: DataEntityService<AuthorizationPoint>, defaultMethods?: string[], additionalDataEntityServices?: GenericObject<DataEntityService<Partial<AuthorizationPoint>>> | undefined, tokenManager?: TokenManager | undefined);
10
+ authorizeApiKey(data: AuthorizeApiKeyData, options: AuthorizeApiKeyOptions): Promise<{
11
+ valid: boolean;
12
+ }>;
13
+ authorizeBearer<UserTokenEnityFields = unknown>(data: {
14
+ authToken?: string;
15
+ refreshToken?: string;
16
+ }, options?: {
17
+ identifierDataField?: string;
18
+ }): Promise<{
19
+ newAuthToken?: string;
20
+ tokenContent?: DecodedTokenContent<UserTokenEnityFields>;
21
+ valid: boolean;
22
+ }>;
23
+ checkAccessWithStorage(): Promise<void>;
24
+ static checkAccess<InputData = GenericObject>(inputData: InputData, user: AuthorizationUser<unknown>, options: AuthorizationStaticCheckAccessOptions): AuthorizationStaticCheckAccessResult;
14
25
  static getValuesForTesting(valueToTest: unknown): unknown[];
15
- mapAuthorizationPoints(moduleName: string, additionalServicesOptions?: DomainBaseOptionsForAdditionalServicesFull): Promise<AuthorizationData<unknown>>;
16
26
  static matchInputValues(input: GenericObject, values: GenericObject): GenericObject;
27
+ static processOutputData(authorizationPoints: {
28
+ [id: number]: BaseAuthorizationPoint<unknown>;
29
+ }, outputData: GenericObject): {
30
+ outputDataToBeMutated: GenericObject;
31
+ };
17
32
  static testValue(valueToTest: unknown, valueToTestAgainst: unknown): boolean;
18
33
  }