@mondart/nestjs-common-module-iam 3.0.0 → 3.2.0
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/dist/decorators/iam-entity-access.decorator.d.ts +1 -1
- package/dist/decorators/iam-entity-access.decorator.d.ts.map +1 -1
- package/dist/decorators/iam-entity-access.decorator.js +1 -1
- package/dist/decorators/iam-entity-access.decorator.js.map +1 -1
- package/dist/guards/iam-context.guard.d.ts +9 -1
- package/dist/guards/iam-context.guard.d.ts.map +1 -1
- package/dist/guards/iam-context.guard.js +82 -11
- package/dist/guards/iam-context.guard.js.map +1 -1
- package/dist/iam-context.module.d.ts +3 -0
- package/dist/iam-context.module.d.ts.map +1 -1
- package/dist/iam-context.module.js +44 -12
- package/dist/iam-context.module.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/iam-context-options.interface.d.ts +28 -0
- package/dist/interfaces/iam-context-options.interface.d.ts.map +1 -0
- package/dist/interfaces/iam-context-options.interface.js +18 -0
- package/dist/interfaces/iam-context-options.interface.js.map +1 -0
- package/dist/interfaces/iam-entity-access.interface.d.ts +8 -7
- package/dist/interfaces/iam-entity-access.interface.d.ts.map +1 -1
- package/dist/services/iam-entity-access.service.js +3 -3
- package/dist/services/iam-entity-access.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ApplyIamEntityScopeOptions, RequireIamEntityAccessOptions } from '../interfaces/iam-entity-access.interface';
|
|
2
2
|
export declare const RequireIamEntityAccess: <T = any>(options: RequireIamEntityAccessOptions<T>) => import("@nestjs/common").CustomDecorator<string>;
|
|
3
|
-
export declare const ApplyIamEntityScope: <T = any>(options
|
|
3
|
+
export declare const ApplyIamEntityScope: <T = any>(options?: ApplyIamEntityScopeOptions<T>) => import("@nestjs/common").CustomDecorator<string>;
|
|
4
4
|
//# sourceMappingURL=iam-entity-access.decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iam-entity-access.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/iam-entity-access.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC9B,MAAM,2CAA2C,CAAC;AAMnD,eAAO,MAAM,sBAAsB,GAAI,CAAC,GAAG,GAAG,EAC5C,SAAS,6BAA6B,CAAC,CAAC,CAAC,qDACK,CAAC;AAEjD,eAAO,MAAM,mBAAmB,GAAI,CAAC,GAAG,GAAG,EACzC,
|
|
1
|
+
{"version":3,"file":"iam-entity-access.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/iam-entity-access.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC9B,MAAM,2CAA2C,CAAC;AAMnD,eAAO,MAAM,sBAAsB,GAAI,CAAC,GAAG,GAAG,EAC5C,SAAS,6BAA6B,CAAC,CAAC,CAAC,qDACK,CAAC;AAEjD,eAAO,MAAM,mBAAmB,GAAI,CAAC,GAAG,GAAG,EACzC,UAAS,0BAA0B,CAAC,CAAC,CAAM,qDACE,CAAC"}
|
|
@@ -5,6 +5,6 @@ const common_1 = require("@nestjs/common");
|
|
|
5
5
|
const iam_decorator_key_const_1 = require("../constants/iam-decorator-key.const");
|
|
6
6
|
const RequireIamEntityAccess = (options) => (0, common_1.SetMetadata)(iam_decorator_key_const_1.IAM_ENTITY_ACCESS_KEY, options);
|
|
7
7
|
exports.RequireIamEntityAccess = RequireIamEntityAccess;
|
|
8
|
-
const ApplyIamEntityScope = (options) => (0, common_1.SetMetadata)(iam_decorator_key_const_1.IAM_ENTITY_SCOPE_KEY, options);
|
|
8
|
+
const ApplyIamEntityScope = (options = {}) => (0, common_1.SetMetadata)(iam_decorator_key_const_1.IAM_ENTITY_SCOPE_KEY, options);
|
|
9
9
|
exports.ApplyIamEntityScope = ApplyIamEntityScope;
|
|
10
10
|
//# sourceMappingURL=iam-entity-access.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iam-entity-access.decorator.js","sourceRoot":"","sources":["../../src/decorators/iam-entity-access.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAK7C,kFAG8C;AAEvC,MAAM,sBAAsB,GAAG,CACpC,OAAyC,EACzC,EAAE,CAAC,IAAA,oBAAW,EAAC,+CAAqB,EAAE,OAAO,CAAC,CAAC;AAFpC,QAAA,sBAAsB,0BAEc;AAE1C,MAAM,mBAAmB,GAAG,CACjC,
|
|
1
|
+
{"version":3,"file":"iam-entity-access.decorator.js","sourceRoot":"","sources":["../../src/decorators/iam-entity-access.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAK7C,kFAG8C;AAEvC,MAAM,sBAAsB,GAAG,CACpC,OAAyC,EACzC,EAAE,CAAC,IAAA,oBAAW,EAAC,+CAAqB,EAAE,OAAO,CAAC,CAAC;AAFpC,QAAA,sBAAsB,0BAEc;AAE1C,MAAM,mBAAmB,GAAG,CACjC,UAAyC,EAAE,EAC3C,EAAE,CAAC,IAAA,oBAAW,EAAC,8CAAoB,EAAE,OAAO,CAAC,CAAC;AAFnC,QAAA,mBAAmB,uBAEgB"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { CanActivate, ExecutionContext } from '@nestjs/common';
|
|
2
2
|
import { Reflector } from '@nestjs/core';
|
|
3
3
|
import { IamEntityAccessService } from '../services/iam-entity-access.service';
|
|
4
|
+
import { IamContextModuleOptions } from '../interfaces/iam-context-options.interface';
|
|
4
5
|
export declare class IamContextGuard implements CanActivate {
|
|
5
6
|
private readonly reflector;
|
|
6
7
|
private readonly iamEntityAccessService;
|
|
7
|
-
|
|
8
|
+
private readonly moduleOptions;
|
|
9
|
+
constructor(reflector: Reflector, iamEntityAccessService: IamEntityAccessService, moduleOptions: IamContextModuleOptions);
|
|
8
10
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
11
|
+
private shouldIgnoreController;
|
|
12
|
+
private matchController;
|
|
13
|
+
private resolveEntityAccessOptions;
|
|
14
|
+
private resolveScopeOptions;
|
|
15
|
+
private findEntityPreset;
|
|
16
|
+
private mergeAccess;
|
|
9
17
|
}
|
|
10
18
|
//# sourceMappingURL=iam-context.guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iam-context.guard.d.ts","sourceRoot":"","sources":["../../src/guards/iam-context.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,
|
|
1
|
+
{"version":3,"file":"iam-context.guard.d.ts","sourceRoot":"","sources":["../../src/guards/iam-context.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAKjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAWzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAEL,uBAAuB,EAGxB,MAAM,6CAA6C,CAAC;AAQrD,qBACa,eAAgB,YAAW,WAAW;IAE/C,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAGvC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAJb,SAAS,EAAE,SAAS,EACpB,sBAAsB,EAAE,sBAAsB,EAG9C,aAAa,EAAE,uBAAuB;IAGnD,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2F9D,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,WAAW;CAkBpB"}
|
|
@@ -8,6 +8,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.IamContextGuard = void 0;
|
|
13
16
|
const common_1 = require("@nestjs/common");
|
|
@@ -15,46 +18,114 @@ const core_1 = require("@nestjs/core");
|
|
|
15
18
|
const nestjs_common_module_core_1 = require("@mondart/nestjs-common-module-core");
|
|
16
19
|
const iam_decorator_key_const_1 = require("../constants/iam-decorator-key.const");
|
|
17
20
|
const iam_entity_access_service_1 = require("../services/iam-entity-access.service");
|
|
21
|
+
const iam_context_options_interface_1 = require("../interfaces/iam-context-options.interface");
|
|
18
22
|
let IamContextGuard = class IamContextGuard {
|
|
19
|
-
constructor(reflector, iamEntityAccessService) {
|
|
23
|
+
constructor(reflector, iamEntityAccessService, moduleOptions) {
|
|
20
24
|
this.reflector = reflector;
|
|
21
25
|
this.iamEntityAccessService = iamEntityAccessService;
|
|
26
|
+
this.moduleOptions = moduleOptions;
|
|
22
27
|
}
|
|
23
28
|
async canActivate(context) {
|
|
24
29
|
const request = context.switchToHttp().getRequest();
|
|
30
|
+
const controller = context.getClass();
|
|
31
|
+
if (this.shouldIgnoreController(controller)) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
25
34
|
const isPublicRoute = this.reflector.getAllAndOverride(iam_decorator_key_const_1.IAM_PUBLIC_ROUTE, [context.getHandler(), context.getClass()]);
|
|
26
35
|
if (isPublicRoute) {
|
|
27
36
|
return true;
|
|
28
37
|
}
|
|
29
38
|
const iamContext = (0, nestjs_common_module_core_1.getIamContext)(request);
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
const decoratorAllowedUserTypes = this.reflector.getAllAndOverride(iam_decorator_key_const_1.IAM_ROUTE_USER_TYPE, [context.getHandler(), context.getClass()]);
|
|
40
|
+
const allowedUserTypes = decoratorAllowedUserTypes ??
|
|
41
|
+
this.moduleOptions.defaultAllowedUserTypes ??
|
|
42
|
+
[];
|
|
43
|
+
if (!decoratorAllowedUserTypes &&
|
|
44
|
+
!this.moduleOptions.allowRoutesWithoutIamDecorator &&
|
|
45
|
+
!allowedUserTypes.length) {
|
|
46
|
+
throw new common_1.ForbiddenException('IAM route user type is not configured');
|
|
47
|
+
}
|
|
34
48
|
const currentUserType = this.iamEntityAccessService.resolveUserType(iamContext, allowedUserTypes);
|
|
35
49
|
request[iam_decorator_key_const_1.IAM_REQUEST_USER_TYPE_KEY] = currentUserType;
|
|
36
50
|
if (!allowedUserTypes.includes(currentUserType)) {
|
|
37
51
|
throw new common_1.ForbiddenException();
|
|
38
52
|
}
|
|
39
|
-
const
|
|
40
|
-
if (
|
|
41
|
-
request[iam_decorator_key_const_1.IAM_REQUEST_ENTITY_SCOPE_OPTIONS_KEY] =
|
|
53
|
+
const rawScopeOptions = this.reflector.getAllAndOverride(iam_decorator_key_const_1.IAM_ENTITY_SCOPE_KEY, [context.getHandler(), context.getClass()]);
|
|
54
|
+
if (rawScopeOptions) {
|
|
55
|
+
request[iam_decorator_key_const_1.IAM_REQUEST_ENTITY_SCOPE_OPTIONS_KEY] =
|
|
56
|
+
this.resolveScopeOptions(rawScopeOptions);
|
|
42
57
|
}
|
|
43
|
-
const
|
|
44
|
-
if (!
|
|
58
|
+
const rawEntityAccessOptions = this.reflector.getAllAndOverride(iam_decorator_key_const_1.IAM_ENTITY_ACCESS_KEY, [context.getHandler(), context.getClass()]);
|
|
59
|
+
if (!rawEntityAccessOptions) {
|
|
45
60
|
return true;
|
|
46
61
|
}
|
|
62
|
+
const entityAccessOptions = this.resolveEntityAccessOptions(rawEntityAccessOptions);
|
|
47
63
|
const hasAccess = await this.iamEntityAccessService.hasEntityAccess(entityAccessOptions, request, iamContext, currentUserType);
|
|
48
64
|
if (!hasAccess) {
|
|
49
65
|
throw new common_1.ForbiddenException(`You do not have access to this ${entityAccessOptions.resourceName ?? 'resource'}`);
|
|
50
66
|
}
|
|
51
67
|
return true;
|
|
52
68
|
}
|
|
69
|
+
shouldIgnoreController(controller) {
|
|
70
|
+
const select = this.moduleOptions.controllers?.select ?? [];
|
|
71
|
+
const ignore = this.moduleOptions.controllers?.ignore ?? [];
|
|
72
|
+
if (this.matchController(controller, ignore)) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if (select.length && !this.matchController(controller, select)) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
matchController(controller, matchers) {
|
|
81
|
+
return matchers.some((matcher) => {
|
|
82
|
+
if (typeof matcher === 'string') {
|
|
83
|
+
return matcher === controller.name;
|
|
84
|
+
}
|
|
85
|
+
return matcher === controller;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
resolveEntityAccessOptions(decoratorOptions) {
|
|
89
|
+
const preset = this.findEntityPreset(decoratorOptions.entity);
|
|
90
|
+
return {
|
|
91
|
+
...decoratorOptions,
|
|
92
|
+
resourceName: decoratorOptions.resourceName ?? preset?.resourceName,
|
|
93
|
+
access: this.mergeAccess(this.moduleOptions.entityAccess?.defaultAccess, preset?.access, decoratorOptions.access),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
resolveScopeOptions(decoratorOptions) {
|
|
97
|
+
const preset = decoratorOptions.entity
|
|
98
|
+
? this.findEntityPreset(decoratorOptions.entity)
|
|
99
|
+
: undefined;
|
|
100
|
+
return {
|
|
101
|
+
...this.moduleOptions.entityAccess?.defaultScope,
|
|
102
|
+
...preset?.scope,
|
|
103
|
+
...decoratorOptions,
|
|
104
|
+
access: this.mergeAccess(this.moduleOptions.entityAccess?.defaultAccess, preset?.scope?.access ?? preset?.access, decoratorOptions.access),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
findEntityPreset(entity) {
|
|
108
|
+
return this.moduleOptions.entityAccess?.presets?.find((preset) => {
|
|
109
|
+
return preset.entity === entity;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
mergeAccess(globalAccess, presetAccess, decoratorAccess) {
|
|
113
|
+
return {
|
|
114
|
+
agent: {
|
|
115
|
+
...globalAccess?.agent,
|
|
116
|
+
...presetAccess?.agent,
|
|
117
|
+
...decoratorAccess?.agent,
|
|
118
|
+
},
|
|
119
|
+
user: decoratorAccess?.user ?? presetAccess?.user ?? globalAccess?.user,
|
|
120
|
+
guest: decoratorAccess?.guest ?? presetAccess?.guest ?? globalAccess?.guest,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
53
123
|
};
|
|
54
124
|
exports.IamContextGuard = IamContextGuard;
|
|
55
125
|
exports.IamContextGuard = IamContextGuard = __decorate([
|
|
56
126
|
(0, common_1.Injectable)(),
|
|
127
|
+
__param(2, (0, common_1.Inject)(iam_context_options_interface_1.IAM_CONTEXT_MODULE_OPTIONS)),
|
|
57
128
|
__metadata("design:paramtypes", [core_1.Reflector,
|
|
58
|
-
iam_entity_access_service_1.IamEntityAccessService])
|
|
129
|
+
iam_entity_access_service_1.IamEntityAccessService, Object])
|
|
59
130
|
], IamContextGuard);
|
|
60
131
|
//# sourceMappingURL=iam-context.guard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iam-context.guard.js","sourceRoot":"","sources":["../../src/guards/iam-context.guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"iam-context.guard.js","sourceRoot":"","sources":["../../src/guards/iam-context.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { DynamicModule } from '@nestjs/common';
|
|
2
|
+
import { IamContextModuleOptions } from './interfaces/iam-context-options.interface';
|
|
1
3
|
export declare class IamContextModule {
|
|
4
|
+
static forRoot(options?: IamContextModuleOptions): DynamicModule;
|
|
2
5
|
}
|
|
3
6
|
//# sourceMappingURL=iam-context.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iam-context.module.d.ts","sourceRoot":"","sources":["../src/iam-context.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"iam-context.module.d.ts","sourceRoot":"","sources":["../src/iam-context.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAO/D,OAAO,EAGL,uBAAuB,EACxB,MAAM,4CAA4C,CAAC;AAEpD,qBAEa,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,uBAA4B,GAAG,aAAa;CAmCrE"}
|
|
@@ -5,24 +5,56 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
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;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var IamContextModule_1;
|
|
8
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
10
|
exports.IamContextModule = void 0;
|
|
10
11
|
const common_1 = require("@nestjs/common");
|
|
11
|
-
const iam_context_guard_1 = require("./guards/iam-context.guard");
|
|
12
12
|
const core_1 = require("@nestjs/core");
|
|
13
|
+
const iam_context_guard_1 = require("./guards/iam-context.guard");
|
|
13
14
|
const iam_entity_access_service_1 = require("./services/iam-entity-access.service");
|
|
14
|
-
|
|
15
|
+
const iam_find_one_query_scope_pipe_1 = require("./pipes/iam-find-one-query-scope.pipe");
|
|
16
|
+
const iam_paginate_query_scope_pipe_1 = require("./pipes/iam-paginate-query-scope.pipe");
|
|
17
|
+
const iam_context_options_interface_1 = require("./interfaces/iam-context-options.interface");
|
|
18
|
+
let IamContextModule = IamContextModule_1 = class IamContextModule {
|
|
19
|
+
static forRoot(options = {}) {
|
|
20
|
+
return {
|
|
21
|
+
module: IamContextModule_1,
|
|
22
|
+
providers: [
|
|
23
|
+
{
|
|
24
|
+
provide: iam_context_options_interface_1.IAM_CONTEXT_MODULE_OPTIONS,
|
|
25
|
+
useValue: {
|
|
26
|
+
...iam_context_options_interface_1.DEFAULT_IAM_CONTEXT_MODULE_OPTIONS,
|
|
27
|
+
...options,
|
|
28
|
+
controllers: {
|
|
29
|
+
...iam_context_options_interface_1.DEFAULT_IAM_CONTEXT_MODULE_OPTIONS.controllers,
|
|
30
|
+
...options.controllers,
|
|
31
|
+
},
|
|
32
|
+
entityAccess: {
|
|
33
|
+
...iam_context_options_interface_1.DEFAULT_IAM_CONTEXT_MODULE_OPTIONS.entityAccess,
|
|
34
|
+
...options.entityAccess,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
iam_entity_access_service_1.IamEntityAccessService,
|
|
39
|
+
iam_find_one_query_scope_pipe_1.IamFindOneQueryScopePipe,
|
|
40
|
+
iam_paginate_query_scope_pipe_1.IamPaginateQueryScopePipe,
|
|
41
|
+
{
|
|
42
|
+
provide: core_1.APP_GUARD,
|
|
43
|
+
useClass: iam_context_guard_1.IamContextGuard,
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
exports: [
|
|
47
|
+
iam_context_options_interface_1.IAM_CONTEXT_MODULE_OPTIONS,
|
|
48
|
+
iam_entity_access_service_1.IamEntityAccessService,
|
|
49
|
+
iam_find_one_query_scope_pipe_1.IamFindOneQueryScopePipe,
|
|
50
|
+
iam_paginate_query_scope_pipe_1.IamPaginateQueryScopePipe,
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
15
54
|
};
|
|
16
55
|
exports.IamContextModule = IamContextModule;
|
|
17
|
-
exports.IamContextModule = IamContextModule = __decorate([
|
|
18
|
-
(0, common_1.
|
|
19
|
-
|
|
20
|
-
iam_entity_access_service_1.IamEntityAccessService,
|
|
21
|
-
{
|
|
22
|
-
provide: core_1.APP_GUARD,
|
|
23
|
-
useClass: iam_context_guard_1.IamContextGuard,
|
|
24
|
-
},
|
|
25
|
-
],
|
|
26
|
-
})
|
|
56
|
+
exports.IamContextModule = IamContextModule = IamContextModule_1 = __decorate([
|
|
57
|
+
(0, common_1.Global)(),
|
|
58
|
+
(0, common_1.Module)({})
|
|
27
59
|
], IamContextModule);
|
|
28
60
|
//# sourceMappingURL=iam-context.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iam-context.module.js","sourceRoot":"","sources":["../src/iam-context.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"iam-context.module.js","sourceRoot":"","sources":["../src/iam-context.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+D;AAC/D,uCAAyC;AAEzC,kEAA6D;AAC7D,oFAA8E;AAC9E,yFAAiF;AACjF,yFAAkF;AAClF,8FAIoD;AAI7C,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,UAAmC,EAAE;QAClD,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,0DAA0B;oBACnC,QAAQ,EAAE;wBACR,GAAG,kEAAkC;wBACrC,GAAG,OAAO;wBACV,WAAW,EAAE;4BACX,GAAG,kEAAkC,CAAC,WAAW;4BACjD,GAAG,OAAO,CAAC,WAAW;yBACvB;wBACD,YAAY,EAAE;4BACZ,GAAG,kEAAkC,CAAC,YAAY;4BAClD,GAAG,OAAO,CAAC,YAAY;yBACxB;qBACF;iBACF;gBACD,kDAAsB;gBACtB,wDAAwB;gBACxB,yDAAyB;gBACzB;oBACE,OAAO,EAAE,gBAAS;oBAClB,QAAQ,EAAE,mCAAe;iBAC1B;aACF;YACD,OAAO,EAAE;gBACP,0DAA0B;gBAC1B,kDAAsB;gBACtB,wDAAwB;gBACxB,yDAAyB;aAC1B;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AApCY,4CAAgB;2BAAhB,gBAAgB;IAF5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,gBAAgB,CAoC5B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * from './enums/iam-user-type.enum';
|
|
|
5
5
|
export * from './guards/iam-context.guard';
|
|
6
6
|
export * from './helpers/user-owner.helper';
|
|
7
7
|
export * from './interfaces/iam-entity-access.interface';
|
|
8
|
+
export * from './interfaces/iam-context-options.interface';
|
|
8
9
|
export * from './types/iam-entity-access.type';
|
|
9
10
|
export * from './pipes/iam-paginate-query-scope.pipe';
|
|
10
11
|
export * from './pipes/iam-find-one-query-scope.pipe';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,7 @@ __exportStar(require("./enums/iam-user-type.enum"), exports);
|
|
|
21
21
|
__exportStar(require("./guards/iam-context.guard"), exports);
|
|
22
22
|
__exportStar(require("./helpers/user-owner.helper"), exports);
|
|
23
23
|
__exportStar(require("./interfaces/iam-entity-access.interface"), exports);
|
|
24
|
+
__exportStar(require("./interfaces/iam-context-options.interface"), exports);
|
|
24
25
|
__exportStar(require("./types/iam-entity-access.type"), exports);
|
|
25
26
|
__exportStar(require("./pipes/iam-paginate-query-scope.pipe"), exports);
|
|
26
27
|
__exportStar(require("./pipes/iam-find-one-query-scope.pipe"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,2EAAyD;AACzD,mEAAiD;AACjD,6DAA2C;AAC3C,6DAA2C;AAC3C,8DAA4C;AAC5C,2EAAyD;AACzD,iEAA+C;AAC/C,wEAAsD;AACtD,wEAAsD;AACtD,uEAAqD;AACrD,uDAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,2EAAyD;AACzD,mEAAiD;AACjD,6DAA2C;AAC3C,6DAA2C;AAC3C,8DAA4C;AAC5C,2EAAyD;AACzD,6EAA2D;AAC3D,iEAA+C;AAC/C,wEAAsD;AACtD,wEAAsD;AACtD,uEAAqD;AACrD,uDAAqC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { EntityTarget } from 'typeorm';
|
|
3
|
+
import { IamUserTypeEnum } from '../enums/iam-user-type.enum';
|
|
4
|
+
import { ApplyIamEntityScopeOptions, EntityAccessByRole } from './iam-entity-access.interface';
|
|
5
|
+
export type IamControllerClass = Type<unknown>;
|
|
6
|
+
export type IamControllerMatcher = string | IamControllerClass;
|
|
7
|
+
export interface IamEntityAccessPreset<T = any> {
|
|
8
|
+
entity: EntityTarget<T>;
|
|
9
|
+
access?: EntityAccessByRole<T>;
|
|
10
|
+
scope?: Partial<ApplyIamEntityScopeOptions<T>>;
|
|
11
|
+
resourceName?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface IamContextModuleOptions {
|
|
14
|
+
defaultAllowedUserTypes?: IamUserTypeEnum[];
|
|
15
|
+
allowRoutesWithoutIamDecorator?: boolean;
|
|
16
|
+
controllers?: {
|
|
17
|
+
select?: IamControllerMatcher[];
|
|
18
|
+
ignore?: IamControllerMatcher[];
|
|
19
|
+
};
|
|
20
|
+
entityAccess?: {
|
|
21
|
+
defaultAccess?: EntityAccessByRole<any>;
|
|
22
|
+
defaultScope?: Partial<ApplyIamEntityScopeOptions<any>>;
|
|
23
|
+
presets?: IamEntityAccessPreset<any>[];
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export declare const IAM_CONTEXT_MODULE_OPTIONS: unique symbol;
|
|
27
|
+
export declare const DEFAULT_IAM_CONTEXT_MODULE_OPTIONS: Required<Pick<IamContextModuleOptions, 'defaultAllowedUserTypes' | 'allowRoutesWithoutIamDecorator'>> & Omit<IamContextModuleOptions, 'defaultAllowedUserTypes' | 'allowRoutesWithoutIamDecorator'>;
|
|
28
|
+
//# sourceMappingURL=iam-context-options.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iam-context-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/iam-context-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/C,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,kBAAkB,CAAC;AAE/D,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,GAAG;IAC5C,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAKxB,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAK/B,KAAK,CAAC,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IAItC,uBAAuB,CAAC,EAAE,eAAe,EAAE,CAAC;IAM5C,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAWzC,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,oBAAoB,EAAE,CAAC;QAChC,MAAM,CAAC,EAAE,oBAAoB,EAAE,CAAC;KACjC,CAAC;IAEF,YAAY,CAAC,EAAE;QAIb,aAAa,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAKxC,YAAY,CAAC,EAAE,OAAO,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC;QAKxD,OAAO,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;KACxC,CAAC;CACH;AAED,eAAO,MAAM,0BAA0B,eAAuC,CAAC;AAE/E,eAAO,MAAM,kCAAkC,EAAE,QAAQ,CACvD,IAAI,CACF,uBAAuB,EACvB,yBAAyB,GAAG,gCAAgC,CAC7D,CACF,GACC,IAAI,CACF,uBAAuB,EACvB,yBAAyB,GAAG,gCAAgC,CAa/D,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_IAM_CONTEXT_MODULE_OPTIONS = exports.IAM_CONTEXT_MODULE_OPTIONS = void 0;
|
|
4
|
+
exports.IAM_CONTEXT_MODULE_OPTIONS = Symbol('IAM_CONTEXT_MODULE_OPTIONS');
|
|
5
|
+
exports.DEFAULT_IAM_CONTEXT_MODULE_OPTIONS = {
|
|
6
|
+
defaultAllowedUserTypes: [],
|
|
7
|
+
allowRoutesWithoutIamDecorator: false,
|
|
8
|
+
controllers: {
|
|
9
|
+
select: [],
|
|
10
|
+
ignore: [],
|
|
11
|
+
},
|
|
12
|
+
entityAccess: {
|
|
13
|
+
defaultAccess: undefined,
|
|
14
|
+
defaultScope: undefined,
|
|
15
|
+
presets: [],
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=iam-context-options.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iam-context-options.interface.js","sourceRoot":"","sources":["../../src/interfaces/iam-context-options.interface.ts"],"names":[],"mappings":";;;AAuEa,QAAA,0BAA0B,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAElE,QAAA,kCAAkC,GASzC;IACJ,uBAAuB,EAAE,EAAE;IAC3B,8BAA8B,EAAE,KAAK;IACrC,WAAW,EAAE;QACX,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;KACX;IACD,YAAY,EAAE;QACZ,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,SAAS;QACvB,OAAO,EAAE,EAAE;KACZ;CACF,CAAC"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { IamUserTypeEnum } from '../enums/iam-user-type.enum';
|
|
2
2
|
import { AccessValueCast, AccessValueSource, EntityAccessBranch } from '../types/iam-entity-access.type';
|
|
3
3
|
import { EntityTarget } from 'typeorm';
|
|
4
|
-
export interface IamAccessValueContext {
|
|
5
|
-
req: any;
|
|
6
|
-
iamContext: any;
|
|
7
|
-
userType: IamUserTypeEnum;
|
|
8
|
-
}
|
|
9
4
|
export interface EntityFieldMatch<T = any> {
|
|
10
5
|
field: keyof T & string;
|
|
11
6
|
valueFrom: AccessValueSource;
|
|
@@ -28,11 +23,17 @@ export interface RequireIamEntityAccessOptions<T = any> {
|
|
|
28
23
|
field: keyof T & string;
|
|
29
24
|
valueFrom: AccessValueSource;
|
|
30
25
|
};
|
|
31
|
-
access
|
|
26
|
+
access?: EntityAccessByRole<T>;
|
|
32
27
|
resourceName?: string;
|
|
33
28
|
}
|
|
34
29
|
export interface ApplyIamEntityScopeOptions<T = any> {
|
|
35
|
-
|
|
30
|
+
entity?: EntityTarget<T>;
|
|
31
|
+
access?: EntityAccessByRole<T>;
|
|
36
32
|
withDeleted?: boolean;
|
|
37
33
|
}
|
|
34
|
+
export interface IamAccessValueContext {
|
|
35
|
+
req: any;
|
|
36
|
+
iamContext: any;
|
|
37
|
+
userType: IamUserTypeEnum;
|
|
38
|
+
}
|
|
38
39
|
//# sourceMappingURL=iam-entity-access.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iam-entity-access.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/iam-entity-access.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"iam-entity-access.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/iam-entity-access.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IACxB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,GAAG;IACvC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;KACjC,CAAC;IAEF,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAE3B,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,6BAA6B,CAAC,CAAC,GAAG,GAAG;IACpD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAExB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;QACxB,SAAS,EAAE,iBAAiB,CAAC;KAC9B,CAAC;IAMF,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAE/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,0BAA0B,CAAC,CAAC,GAAG,GAAG;IAIjD,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAMzB,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAE/B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,GAAG,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;CAC3B"}
|
|
@@ -76,7 +76,7 @@ let IamEntityAccessService = class IamEntityAccessService {
|
|
|
76
76
|
}
|
|
77
77
|
buildScopedWhere(options, req, iamContext, userType, lookup) {
|
|
78
78
|
if (userType === iam_user_type_enum_1.IamUserTypeEnum.AGENT) {
|
|
79
|
-
const agentAccess = options.access
|
|
79
|
+
const agentAccess = options.access?.agent;
|
|
80
80
|
if (!agentAccess || agentAccess.bypass !== false) {
|
|
81
81
|
return undefined;
|
|
82
82
|
}
|
|
@@ -94,7 +94,7 @@ let IamEntityAccessService = class IamEntityAccessService {
|
|
|
94
94
|
}
|
|
95
95
|
if (userType === iam_user_type_enum_1.IamUserTypeEnum.USER) {
|
|
96
96
|
const where = this.buildWhereFromBranches({
|
|
97
|
-
branches: options.access
|
|
97
|
+
branches: options.access?.user?.anyOf ?? [],
|
|
98
98
|
req,
|
|
99
99
|
iamContext,
|
|
100
100
|
userType,
|
|
@@ -107,7 +107,7 @@ let IamEntityAccessService = class IamEntityAccessService {
|
|
|
107
107
|
}
|
|
108
108
|
if (userType === iam_user_type_enum_1.IamUserTypeEnum.GUEST) {
|
|
109
109
|
const where = this.buildWhereFromBranches({
|
|
110
|
-
branches: options.access
|
|
110
|
+
branches: options.access?.guest?.anyOf ?? [],
|
|
111
111
|
req,
|
|
112
112
|
iamContext,
|
|
113
113
|
userType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iam-entity-access.service.js","sourceRoot":"","sources":["../../src/services/iam-entity-access.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"iam-entity-access.service.js","sourceRoot":"","sources":["../../src/services/iam-entity-access.service.ts"],"names":[],"mappings":"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"}
|