@flusys/nestjs-iam 0.1.0-beta.1 → 0.1.0-beta.2
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/README.md +665 -0
- package/cjs/config/iam.constants.js +11 -0
- package/cjs/config/index.js +18 -0
- package/cjs/controllers/action.controller.js +117 -0
- package/cjs/controllers/company-action-permission.controller.js +110 -0
- package/cjs/controllers/index.js +23 -0
- package/cjs/controllers/my-permission.controller.js +90 -0
- package/cjs/controllers/role-permission.controller.js +160 -0
- package/cjs/controllers/role.controller.js +58 -0
- package/cjs/controllers/user-action-permission.controller.js +110 -0
- package/cjs/docs/iam-swagger.config.js +202 -0
- package/cjs/docs/index.js +18 -0
- package/cjs/dtos/action.dto.js +347 -0
- package/cjs/dtos/index.js +21 -0
- package/cjs/dtos/permission.dto.js +554 -0
- package/cjs/dtos/role.dto.js +238 -0
- package/cjs/entities/action-base.entity.js +135 -0
- package/cjs/entities/action.entity.js +28 -0
- package/cjs/entities/index.js +81 -0
- package/cjs/entities/permission-base.entity.js +156 -0
- package/cjs/entities/permission-with-company.entity.js +99 -0
- package/cjs/entities/role-base.entity.js +86 -0
- package/cjs/entities/role-with-company.entity.js +55 -0
- package/cjs/entities/role.entity.js +25 -0
- package/cjs/entities/user-iam-permission.entity.js +57 -0
- package/cjs/enums/action-type.enum.js +22 -0
- package/cjs/enums/index.js +19 -0
- package/cjs/enums/permission-type.enum.js +16 -0
- package/cjs/helpers/index.js +19 -0
- package/cjs/helpers/permission-evaluator.helper.js +175 -0
- package/cjs/helpers/permission-mode.helper.js +49 -0
- package/cjs/index.js +28 -79
- package/cjs/interfaces/action.interface.js +4 -0
- package/cjs/interfaces/iam-module-async-options.interface.js +4 -0
- package/cjs/interfaces/iam-module-options.interface.js +18 -0
- package/cjs/interfaces/index.js +21 -0
- package/cjs/interfaces/role.interface.js +7 -0
- package/cjs/modules/iam.module.js +237 -0
- package/cjs/modules/index.js +18 -0
- package/cjs/services/action.service.js +253 -0
- package/cjs/services/iam-config.service.js +107 -0
- package/cjs/services/iam-datasource.provider.js +205 -0
- package/cjs/services/index.js +23 -0
- package/cjs/services/permission-cache.service.js +308 -0
- package/cjs/services/permission.service.js +1020 -0
- package/cjs/services/role.service.js +181 -0
- package/cjs/types/index.js +18 -0
- package/cjs/types/logic-node.type.js +54 -0
- package/fesm/config/iam.constants.js +1 -0
- package/fesm/config/index.js +1 -0
- package/fesm/controllers/action.controller.js +107 -0
- package/fesm/controllers/company-action-permission.controller.js +100 -0
- package/fesm/controllers/index.js +7 -0
- package/fesm/controllers/my-permission.controller.js +80 -0
- package/fesm/controllers/role-permission.controller.js +150 -0
- package/fesm/controllers/role.controller.js +48 -0
- package/fesm/controllers/user-action-permission.controller.js +100 -0
- package/fesm/docs/iam-swagger.config.js +192 -0
- package/fesm/docs/index.js +1 -0
- package/fesm/dtos/action.dto.js +317 -0
- package/fesm/dtos/index.js +4 -0
- package/fesm/dtos/permission.dto.js +490 -0
- package/fesm/dtos/role.dto.js +214 -0
- package/fesm/entities/action-base.entity.js +128 -0
- package/fesm/entities/action.entity.js +18 -0
- package/fesm/entities/index.js +56 -0
- package/fesm/entities/permission-base.entity.js +138 -0
- package/fesm/entities/permission-with-company.entity.js +89 -0
- package/fesm/entities/role-base.entity.js +79 -0
- package/fesm/entities/role-with-company.entity.js +45 -0
- package/fesm/entities/role.entity.js +15 -0
- package/fesm/entities/user-iam-permission.entity.js +38 -0
- package/fesm/enums/action-type.enum.js +12 -0
- package/fesm/enums/index.js +2 -0
- package/fesm/enums/permission-type.enum.js +6 -0
- package/fesm/helpers/index.js +2 -0
- package/fesm/helpers/permission-evaluator.helper.js +165 -0
- package/fesm/helpers/permission-mode.helper.js +49 -0
- package/fesm/index.js +11 -79
- package/fesm/interfaces/action.interface.js +3 -0
- package/fesm/interfaces/iam-module-async-options.interface.js +3 -0
- package/fesm/interfaces/iam-module-options.interface.js +1 -0
- package/fesm/interfaces/index.js +4 -0
- package/fesm/interfaces/role.interface.js +4 -0
- package/fesm/modules/iam.module.js +227 -0
- package/fesm/modules/index.js +1 -0
- package/fesm/services/action.service.js +243 -0
- package/fesm/services/iam-config.service.js +97 -0
- package/fesm/services/iam-datasource.provider.js +154 -0
- package/fesm/services/index.js +6 -0
- package/fesm/services/permission-cache.service.js +298 -0
- package/fesm/services/permission.service.js +1010 -0
- package/fesm/services/role.service.js +171 -0
- package/fesm/types/index.js +1 -0
- package/fesm/types/logic-node.type.js +36 -0
- package/package.json +25 -25
- package/cjs/config-index.js +0 -1
- package/cjs/controllers-index.js +0 -1
- package/cjs/docs-index.js +0 -79
- package/cjs/dtos-index.js +0 -1
- package/cjs/entities-index.js +0 -1
- package/cjs/enums-index.js +0 -1
- package/cjs/helpers-index.js +0 -1
- package/cjs/interfaces-index.js +0 -1
- package/cjs/modules-index.js +0 -1
- package/cjs/services-index.js +0 -1
- package/cjs/types-index.js +0 -1
- package/fesm/config-index.js +0 -1
- package/fesm/controllers-index.js +0 -1
- package/fesm/docs-index.js +0 -79
- package/fesm/dtos-index.js +0 -1
- package/fesm/entities-index.js +0 -1
- package/fesm/enums-index.js +0 -1
- package/fesm/helpers-index.js +0 -1
- package/fesm/interfaces-index.js +0 -0
- package/fesm/modules-index.js +0 -1
- package/fesm/services-index.js +0 -1
- package/fesm/types-index.js +0 -1
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ActionController", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ActionController;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _guards = require("@flusys/nestjs-shared/guards");
|
|
12
|
+
const _nestjsshared = require("@flusys/nestjs-shared");
|
|
13
|
+
const _common = require("@nestjs/common");
|
|
14
|
+
const _swagger = require("@nestjs/swagger");
|
|
15
|
+
const _actiondto = require("../dtos/action.dto");
|
|
16
|
+
const _actionservice = require("../services/action.service");
|
|
17
|
+
function _define_property(obj, key, value) {
|
|
18
|
+
if (key in obj) {
|
|
19
|
+
Object.defineProperty(obj, key, {
|
|
20
|
+
value: value,
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true
|
|
24
|
+
});
|
|
25
|
+
} else {
|
|
26
|
+
obj[key] = value;
|
|
27
|
+
}
|
|
28
|
+
return obj;
|
|
29
|
+
}
|
|
30
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
31
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
33
|
+
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;
|
|
34
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
35
|
+
}
|
|
36
|
+
function _ts_metadata(k, v) {
|
|
37
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
38
|
+
}
|
|
39
|
+
function _ts_param(paramIndex, decorator) {
|
|
40
|
+
return function(target, key) {
|
|
41
|
+
decorator(target, key, paramIndex);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
let ActionController = class ActionController extends (0, _nestjsshared.createApiController)(_actiondto.CreateActionDto, _actiondto.UpdateActionDto, _actiondto.ActionResponseDto) {
|
|
45
|
+
async getActionsForPermission(user) {
|
|
46
|
+
const actions = await this.actionService.getActionsForPermission(user);
|
|
47
|
+
return {
|
|
48
|
+
success: true,
|
|
49
|
+
message: 'Actions retrieved successfully',
|
|
50
|
+
data: actions
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async getActionTree(query, user) {
|
|
54
|
+
const tree = await this.actionService.getActionTree(user, query.search, query.isActive, query.withDeleted);
|
|
55
|
+
return {
|
|
56
|
+
success: true,
|
|
57
|
+
message: 'Action tree retrieved successfully',
|
|
58
|
+
data: tree
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
constructor(actionService){
|
|
62
|
+
super(actionService), _define_property(this, "actionService", void 0), this.actionService = actionService;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
_ts_decorate([
|
|
66
|
+
(0, _common.Get)('tree-for-permission'),
|
|
67
|
+
(0, _common.UseGuards)(_guards.JwtAuthGuard),
|
|
68
|
+
(0, _swagger.ApiBearerAuth)(),
|
|
69
|
+
(0, _swagger.ApiOperation)({
|
|
70
|
+
summary: 'Get actions for permission assignment',
|
|
71
|
+
description: 'Returns actions available for permission assignment. If company feature enabled, filtered by company whitelist.'
|
|
72
|
+
}),
|
|
73
|
+
(0, _swagger.ApiResponse)({
|
|
74
|
+
status: 200,
|
|
75
|
+
type: _nestjsshared.SingleResponseDto
|
|
76
|
+
}),
|
|
77
|
+
_ts_param(0, (0, _nestjsshared.CurrentUser)()),
|
|
78
|
+
_ts_metadata("design:type", Function),
|
|
79
|
+
_ts_metadata("design:paramtypes", [
|
|
80
|
+
typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
|
|
81
|
+
]),
|
|
82
|
+
_ts_metadata("design:returntype", Promise)
|
|
83
|
+
], ActionController.prototype, "getActionsForPermission", null);
|
|
84
|
+
_ts_decorate([
|
|
85
|
+
(0, _common.Post)('tree'),
|
|
86
|
+
(0, _common.UseGuards)(_guards.JwtAuthGuard),
|
|
87
|
+
(0, _swagger.ApiBearerAuth)(),
|
|
88
|
+
(0, _swagger.ApiOperation)({
|
|
89
|
+
summary: 'Get actions in hierarchical tree structure',
|
|
90
|
+
description: 'Returns all actions organized in a parent-child tree structure. Supports optional search and filtering.'
|
|
91
|
+
}),
|
|
92
|
+
(0, _swagger.ApiResponse)({
|
|
93
|
+
status: 200,
|
|
94
|
+
description: 'Actions tree retrieved successfully',
|
|
95
|
+
type: _nestjsshared.SingleResponseDto
|
|
96
|
+
}),
|
|
97
|
+
(0, _swagger.ApiBody)({
|
|
98
|
+
type: _actiondto.ActionTreeQueryDto
|
|
99
|
+
}),
|
|
100
|
+
_ts_param(0, (0, _common.Body)()),
|
|
101
|
+
_ts_param(1, (0, _nestjsshared.CurrentUser)()),
|
|
102
|
+
_ts_metadata("design:type", Function),
|
|
103
|
+
_ts_metadata("design:paramtypes", [
|
|
104
|
+
typeof _actiondto.ActionTreeQueryDto === "undefined" ? Object : _actiondto.ActionTreeQueryDto,
|
|
105
|
+
typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
|
|
106
|
+
]),
|
|
107
|
+
_ts_metadata("design:returntype", Promise)
|
|
108
|
+
], ActionController.prototype, "getActionTree", null);
|
|
109
|
+
ActionController = _ts_decorate([
|
|
110
|
+
(0, _swagger.ApiTags)('IAM - Actions'),
|
|
111
|
+
(0, _common.Controller)('iam/actions'),
|
|
112
|
+
_ts_param(0, (0, _common.Inject)(_actionservice.ActionService)),
|
|
113
|
+
_ts_metadata("design:type", Function),
|
|
114
|
+
_ts_metadata("design:paramtypes", [
|
|
115
|
+
typeof _actionservice.ActionService === "undefined" ? Object : _actionservice.ActionService
|
|
116
|
+
])
|
|
117
|
+
], ActionController);
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "CompanyActionPermissionController", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return CompanyActionPermissionController;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nestjsshared = require("@flusys/nestjs-shared");
|
|
12
|
+
const _common = require("@nestjs/common");
|
|
13
|
+
const _swagger = require("@nestjs/swagger");
|
|
14
|
+
const _permissiondto = require("../dtos/permission.dto");
|
|
15
|
+
const _permissionservice = require("../services/permission.service");
|
|
16
|
+
function _define_property(obj, key, value) {
|
|
17
|
+
if (key in obj) {
|
|
18
|
+
Object.defineProperty(obj, key, {
|
|
19
|
+
value: value,
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
obj[key] = value;
|
|
26
|
+
}
|
|
27
|
+
return obj;
|
|
28
|
+
}
|
|
29
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
30
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
31
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
32
|
+
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;
|
|
33
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
34
|
+
}
|
|
35
|
+
function _ts_metadata(k, v) {
|
|
36
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
37
|
+
}
|
|
38
|
+
function _ts_param(paramIndex, decorator) {
|
|
39
|
+
return function(target, key) {
|
|
40
|
+
decorator(target, key, paramIndex);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
let CompanyActionPermissionController = class CompanyActionPermissionController {
|
|
44
|
+
async assignCompanyActions(dto) {
|
|
45
|
+
return this.permissionService.assignCompanyActions(dto);
|
|
46
|
+
}
|
|
47
|
+
async getCompanyActions(companyId, query) {
|
|
48
|
+
const actions = await this.permissionService.getCompanyActions(companyId);
|
|
49
|
+
return {
|
|
50
|
+
success: true,
|
|
51
|
+
message: 'Company actions retrieved successfully',
|
|
52
|
+
data: actions
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
|
|
56
|
+
constructor(permissionService){
|
|
57
|
+
_define_property(this, "permissionService", void 0);
|
|
58
|
+
this.permissionService = permissionService;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
_ts_decorate([
|
|
62
|
+
(0, _common.Post)('company-actions/assign'),
|
|
63
|
+
(0, _swagger.ApiOperation)({
|
|
64
|
+
summary: 'Whitelist actions for company',
|
|
65
|
+
description: 'Controls which actions are available to company users/roles.'
|
|
66
|
+
}),
|
|
67
|
+
(0, _swagger.ApiResponse)({
|
|
68
|
+
status: 200,
|
|
69
|
+
type: _permissiondto.PermissionOperationResultDto
|
|
70
|
+
}),
|
|
71
|
+
(0, _swagger.ApiBody)({
|
|
72
|
+
type: _permissiondto.AssignCompanyActionsDto
|
|
73
|
+
}),
|
|
74
|
+
_ts_param(0, (0, _common.Body)()),
|
|
75
|
+
_ts_metadata("design:type", Function),
|
|
76
|
+
_ts_metadata("design:paramtypes", [
|
|
77
|
+
typeof _permissiondto.AssignCompanyActionsDto === "undefined" ? Object : _permissiondto.AssignCompanyActionsDto
|
|
78
|
+
]),
|
|
79
|
+
_ts_metadata("design:returntype", Promise)
|
|
80
|
+
], CompanyActionPermissionController.prototype, "assignCompanyActions", null);
|
|
81
|
+
_ts_decorate([
|
|
82
|
+
(0, _common.Get)('company-actions/:companyId'),
|
|
83
|
+
(0, _swagger.ApiOperation)({
|
|
84
|
+
summary: 'Get company whitelisted actions',
|
|
85
|
+
description: 'Returns actions available to company.'
|
|
86
|
+
}),
|
|
87
|
+
(0, _swagger.ApiResponse)({
|
|
88
|
+
status: 200,
|
|
89
|
+
type: _nestjsshared.SingleResponseDto
|
|
90
|
+
}),
|
|
91
|
+
_ts_param(0, (0, _common.Param)('companyId')),
|
|
92
|
+
_ts_param(1, (0, _common.Query)()),
|
|
93
|
+
_ts_metadata("design:type", Function),
|
|
94
|
+
_ts_metadata("design:paramtypes", [
|
|
95
|
+
String,
|
|
96
|
+
typeof _permissiondto.GetCompanyActionsDto === "undefined" ? Object : _permissiondto.GetCompanyActionsDto
|
|
97
|
+
]),
|
|
98
|
+
_ts_metadata("design:returntype", Promise)
|
|
99
|
+
], CompanyActionPermissionController.prototype, "getCompanyActions", null);
|
|
100
|
+
CompanyActionPermissionController = _ts_decorate([
|
|
101
|
+
(0, _swagger.ApiTags)('IAM - Company Action Permissions'),
|
|
102
|
+
(0, _common.Controller)('iam/permissions'),
|
|
103
|
+
(0, _common.UseGuards)(_nestjsshared.JwtAuthGuard),
|
|
104
|
+
(0, _swagger.ApiBearerAuth)(),
|
|
105
|
+
_ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
|
|
106
|
+
_ts_metadata("design:type", Function),
|
|
107
|
+
_ts_metadata("design:paramtypes", [
|
|
108
|
+
typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
|
|
109
|
+
])
|
|
110
|
+
], CompanyActionPermissionController);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./action.controller"), exports);
|
|
6
|
+
_export_star(require("./role.controller"), exports);
|
|
7
|
+
_export_star(require("./company-action-permission.controller"), exports);
|
|
8
|
+
_export_star(require("./my-permission.controller"), exports);
|
|
9
|
+
_export_star(require("./role-permission.controller"), exports);
|
|
10
|
+
_export_star(require("./user-action-permission.controller"), exports);
|
|
11
|
+
function _export_star(from, to) {
|
|
12
|
+
Object.keys(from).forEach(function(k) {
|
|
13
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
14
|
+
Object.defineProperty(to, k, {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function() {
|
|
17
|
+
return from[k];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return from;
|
|
23
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "MyPermissionController", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return MyPermissionController;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nestjsshared = require("@flusys/nestjs-shared");
|
|
12
|
+
const _guards = require("@flusys/nestjs-shared/guards");
|
|
13
|
+
const _common = require("@nestjs/common");
|
|
14
|
+
const _swagger = require("@nestjs/swagger");
|
|
15
|
+
const _permissiondto = require("../dtos/permission.dto");
|
|
16
|
+
const _permissionservice = require("../services/permission.service");
|
|
17
|
+
function _define_property(obj, key, value) {
|
|
18
|
+
if (key in obj) {
|
|
19
|
+
Object.defineProperty(obj, key, {
|
|
20
|
+
value: value,
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true
|
|
24
|
+
});
|
|
25
|
+
} else {
|
|
26
|
+
obj[key] = value;
|
|
27
|
+
}
|
|
28
|
+
return obj;
|
|
29
|
+
}
|
|
30
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
31
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
33
|
+
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;
|
|
34
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
35
|
+
}
|
|
36
|
+
function _ts_metadata(k, v) {
|
|
37
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
38
|
+
}
|
|
39
|
+
function _ts_param(paramIndex, decorator) {
|
|
40
|
+
return function(target, key) {
|
|
41
|
+
decorator(target, key, paramIndex);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
let MyPermissionController = class MyPermissionController {
|
|
45
|
+
async getMyPermissions(query, user) {
|
|
46
|
+
return this.permissionService.getMyPermissions(user.id, user.branchId ?? null, user.companyId ?? null, query.parentCodes);
|
|
47
|
+
}
|
|
48
|
+
// NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
|
|
49
|
+
constructor(permissionService){
|
|
50
|
+
_define_property(this, "permissionService", void 0);
|
|
51
|
+
this.permissionService = permissionService;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
_ts_decorate([
|
|
55
|
+
(0, _common.Post)('my-permissions'),
|
|
56
|
+
(0, _swagger.ApiOperation)({
|
|
57
|
+
summary: 'Get current user permissions',
|
|
58
|
+
description: 'Returns complete permissions for authenticated user. Includes menus, frontend actions, and caches endpoint permissions. Optionally filter by parent codes.'
|
|
59
|
+
}),
|
|
60
|
+
(0, _swagger.ApiResponse)({
|
|
61
|
+
status: 200,
|
|
62
|
+
type: _permissiondto.MyPermissionsResponseDto
|
|
63
|
+
}),
|
|
64
|
+
(0, _swagger.ApiResponse)({
|
|
65
|
+
status: 401,
|
|
66
|
+
description: 'Unauthorized'
|
|
67
|
+
}),
|
|
68
|
+
(0, _swagger.ApiBody)({
|
|
69
|
+
type: _permissiondto.MyPermissionsQueryDto
|
|
70
|
+
}),
|
|
71
|
+
_ts_param(0, (0, _common.Body)()),
|
|
72
|
+
_ts_param(1, (0, _nestjsshared.CurrentUser)()),
|
|
73
|
+
_ts_metadata("design:type", Function),
|
|
74
|
+
_ts_metadata("design:paramtypes", [
|
|
75
|
+
typeof _permissiondto.MyPermissionsQueryDto === "undefined" ? Object : _permissiondto.MyPermissionsQueryDto,
|
|
76
|
+
typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
|
|
77
|
+
]),
|
|
78
|
+
_ts_metadata("design:returntype", Promise)
|
|
79
|
+
], MyPermissionController.prototype, "getMyPermissions", null);
|
|
80
|
+
MyPermissionController = _ts_decorate([
|
|
81
|
+
(0, _swagger.ApiTags)('IAM - My Permissions'),
|
|
82
|
+
(0, _common.Controller)('iam/permissions'),
|
|
83
|
+
(0, _common.UseGuards)(_guards.JwtAuthGuard),
|
|
84
|
+
(0, _swagger.ApiBearerAuth)(),
|
|
85
|
+
_ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
|
|
86
|
+
_ts_metadata("design:type", Function),
|
|
87
|
+
_ts_metadata("design:paramtypes", [
|
|
88
|
+
typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
|
|
89
|
+
])
|
|
90
|
+
], MyPermissionController);
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "RolePermissionController", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return RolePermissionController;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nestjsshared = require("@flusys/nestjs-shared");
|
|
12
|
+
const _common = require("@nestjs/common");
|
|
13
|
+
const _swagger = require("@nestjs/swagger");
|
|
14
|
+
const _permissiondto = require("../dtos/permission.dto");
|
|
15
|
+
const _permissionservice = require("../services/permission.service");
|
|
16
|
+
function _define_property(obj, key, value) {
|
|
17
|
+
if (key in obj) {
|
|
18
|
+
Object.defineProperty(obj, key, {
|
|
19
|
+
value: value,
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
obj[key] = value;
|
|
26
|
+
}
|
|
27
|
+
return obj;
|
|
28
|
+
}
|
|
29
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
30
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
31
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
32
|
+
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;
|
|
33
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
34
|
+
}
|
|
35
|
+
function _ts_metadata(k, v) {
|
|
36
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
37
|
+
}
|
|
38
|
+
function _ts_param(paramIndex, decorator) {
|
|
39
|
+
return function(target, key) {
|
|
40
|
+
decorator(target, key, paramIndex);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
let RolePermissionController = class RolePermissionController {
|
|
44
|
+
async assignRoleActions(dto) {
|
|
45
|
+
return this.permissionService.assignRoleActions(dto);
|
|
46
|
+
}
|
|
47
|
+
async getRoleActions(roleId, query) {
|
|
48
|
+
const actions = await this.permissionService.getRoleActions(roleId);
|
|
49
|
+
return {
|
|
50
|
+
success: true,
|
|
51
|
+
message: 'Role actions retrieved successfully',
|
|
52
|
+
data: actions
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async assignUserRoles(dto) {
|
|
56
|
+
return this.permissionService.assignUserRoles(dto);
|
|
57
|
+
}
|
|
58
|
+
async getUserRoles(userId, query) {
|
|
59
|
+
const roles = await this.permissionService.getUserRoles(userId, query.branchId, query.companyId);
|
|
60
|
+
return {
|
|
61
|
+
success: true,
|
|
62
|
+
message: 'User roles retrieved successfully',
|
|
63
|
+
data: roles
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
|
|
67
|
+
constructor(permissionService){
|
|
68
|
+
_define_property(this, "permissionService", void 0);
|
|
69
|
+
this.permissionService = permissionService;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
_ts_decorate([
|
|
73
|
+
(0, _common.Post)('role-actions/assign'),
|
|
74
|
+
(0, _swagger.ApiOperation)({
|
|
75
|
+
summary: 'Assign/remove actions to/from role',
|
|
76
|
+
description: 'RBAC mode. No branch scoping.'
|
|
77
|
+
}),
|
|
78
|
+
(0, _swagger.ApiResponse)({
|
|
79
|
+
status: 200,
|
|
80
|
+
type: _permissiondto.PermissionOperationResultDto
|
|
81
|
+
}),
|
|
82
|
+
(0, _swagger.ApiBody)({
|
|
83
|
+
type: _permissiondto.AssignRoleActionsDto
|
|
84
|
+
}),
|
|
85
|
+
_ts_param(0, (0, _common.Body)()),
|
|
86
|
+
_ts_metadata("design:type", Function),
|
|
87
|
+
_ts_metadata("design:paramtypes", [
|
|
88
|
+
typeof _permissiondto.AssignRoleActionsDto === "undefined" ? Object : _permissiondto.AssignRoleActionsDto
|
|
89
|
+
]),
|
|
90
|
+
_ts_metadata("design:returntype", Promise)
|
|
91
|
+
], RolePermissionController.prototype, "assignRoleActions", null);
|
|
92
|
+
_ts_decorate([
|
|
93
|
+
(0, _common.Get)('role-actions/:roleId'),
|
|
94
|
+
(0, _swagger.ApiOperation)({
|
|
95
|
+
summary: 'Get role actions',
|
|
96
|
+
description: 'Returns actions assigned to role.'
|
|
97
|
+
}),
|
|
98
|
+
(0, _swagger.ApiResponse)({
|
|
99
|
+
status: 200,
|
|
100
|
+
type: _nestjsshared.SingleResponseDto
|
|
101
|
+
}),
|
|
102
|
+
_ts_param(0, (0, _common.Param)('roleId')),
|
|
103
|
+
_ts_param(1, (0, _common.Query)()),
|
|
104
|
+
_ts_metadata("design:type", Function),
|
|
105
|
+
_ts_metadata("design:paramtypes", [
|
|
106
|
+
String,
|
|
107
|
+
typeof _permissiondto.GetRoleActionsDto === "undefined" ? Object : _permissiondto.GetRoleActionsDto
|
|
108
|
+
]),
|
|
109
|
+
_ts_metadata("design:returntype", Promise)
|
|
110
|
+
], RolePermissionController.prototype, "getRoleActions", null);
|
|
111
|
+
_ts_decorate([
|
|
112
|
+
(0, _common.Post)('user-roles/assign'),
|
|
113
|
+
(0, _swagger.ApiOperation)({
|
|
114
|
+
summary: 'Assign/remove roles to/from user',
|
|
115
|
+
description: 'RBAC mode. If company feature enabled, branchId is required.'
|
|
116
|
+
}),
|
|
117
|
+
(0, _swagger.ApiResponse)({
|
|
118
|
+
status: 200,
|
|
119
|
+
type: _permissiondto.PermissionOperationResultDto
|
|
120
|
+
}),
|
|
121
|
+
(0, _swagger.ApiBody)({
|
|
122
|
+
type: _permissiondto.AssignUserRolesDto
|
|
123
|
+
}),
|
|
124
|
+
_ts_param(0, (0, _common.Body)()),
|
|
125
|
+
_ts_metadata("design:type", Function),
|
|
126
|
+
_ts_metadata("design:paramtypes", [
|
|
127
|
+
typeof _permissiondto.AssignUserRolesDto === "undefined" ? Object : _permissiondto.AssignUserRolesDto
|
|
128
|
+
]),
|
|
129
|
+
_ts_metadata("design:returntype", Promise)
|
|
130
|
+
], RolePermissionController.prototype, "assignUserRoles", null);
|
|
131
|
+
_ts_decorate([
|
|
132
|
+
(0, _common.Get)('user-roles/:userId'),
|
|
133
|
+
(0, _swagger.ApiOperation)({
|
|
134
|
+
summary: 'Get user roles',
|
|
135
|
+
description: 'Returns roles assigned to user. Filter by companyId and branchId.'
|
|
136
|
+
}),
|
|
137
|
+
(0, _swagger.ApiResponse)({
|
|
138
|
+
status: 200,
|
|
139
|
+
type: _nestjsshared.SingleResponseDto
|
|
140
|
+
}),
|
|
141
|
+
_ts_param(0, (0, _common.Param)('userId')),
|
|
142
|
+
_ts_param(1, (0, _common.Query)()),
|
|
143
|
+
_ts_metadata("design:type", Function),
|
|
144
|
+
_ts_metadata("design:paramtypes", [
|
|
145
|
+
String,
|
|
146
|
+
typeof _permissiondto.GetUserRolesDto === "undefined" ? Object : _permissiondto.GetUserRolesDto
|
|
147
|
+
]),
|
|
148
|
+
_ts_metadata("design:returntype", Promise)
|
|
149
|
+
], RolePermissionController.prototype, "getUserRoles", null);
|
|
150
|
+
RolePermissionController = _ts_decorate([
|
|
151
|
+
(0, _swagger.ApiTags)('IAM - Role Permissions'),
|
|
152
|
+
(0, _common.Controller)('iam/permissions'),
|
|
153
|
+
(0, _common.UseGuards)(_nestjsshared.JwtAuthGuard),
|
|
154
|
+
(0, _swagger.ApiBearerAuth)(),
|
|
155
|
+
_ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
|
|
156
|
+
_ts_metadata("design:type", Function),
|
|
157
|
+
_ts_metadata("design:paramtypes", [
|
|
158
|
+
typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
|
|
159
|
+
])
|
|
160
|
+
], RolePermissionController);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "RoleController", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return RoleController;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _classes = require("@flusys/nestjs-shared/classes");
|
|
12
|
+
const _common = require("@nestjs/common");
|
|
13
|
+
const _swagger = require("@nestjs/swagger");
|
|
14
|
+
const _roledto = require("../dtos/role.dto");
|
|
15
|
+
const _roleservice = require("../services/role.service");
|
|
16
|
+
function _define_property(obj, key, value) {
|
|
17
|
+
if (key in obj) {
|
|
18
|
+
Object.defineProperty(obj, key, {
|
|
19
|
+
value: value,
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
obj[key] = value;
|
|
26
|
+
}
|
|
27
|
+
return obj;
|
|
28
|
+
}
|
|
29
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
30
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
31
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
32
|
+
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;
|
|
33
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
34
|
+
}
|
|
35
|
+
function _ts_metadata(k, v) {
|
|
36
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
37
|
+
}
|
|
38
|
+
function _ts_param(paramIndex, decorator) {
|
|
39
|
+
return function(target, key) {
|
|
40
|
+
decorator(target, key, paramIndex);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
let RoleController = class RoleController extends (0, _classes.createApiController)(_roledto.CreateRoleDto, _roledto.UpdateRoleDto, _roledto.RoleResponseDto, {
|
|
44
|
+
security: 'jwt'
|
|
45
|
+
}) {
|
|
46
|
+
constructor(roleService){
|
|
47
|
+
super(roleService), _define_property(this, "roleService", void 0), this.roleService = roleService;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
RoleController = _ts_decorate([
|
|
51
|
+
(0, _swagger.ApiTags)('IAM - Roles'),
|
|
52
|
+
(0, _common.Controller)('iam/roles'),
|
|
53
|
+
_ts_param(0, (0, _common.Inject)(_roleservice.RoleService)),
|
|
54
|
+
_ts_metadata("design:type", Function),
|
|
55
|
+
_ts_metadata("design:paramtypes", [
|
|
56
|
+
typeof _roleservice.RoleService === "undefined" ? Object : _roleservice.RoleService
|
|
57
|
+
])
|
|
58
|
+
], RoleController);
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "UserActionPermissionController", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return UserActionPermissionController;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nestjsshared = require("@flusys/nestjs-shared");
|
|
12
|
+
const _common = require("@nestjs/common");
|
|
13
|
+
const _swagger = require("@nestjs/swagger");
|
|
14
|
+
const _permissiondto = require("../dtos/permission.dto");
|
|
15
|
+
const _permissionservice = require("../services/permission.service");
|
|
16
|
+
function _define_property(obj, key, value) {
|
|
17
|
+
if (key in obj) {
|
|
18
|
+
Object.defineProperty(obj, key, {
|
|
19
|
+
value: value,
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
obj[key] = value;
|
|
26
|
+
}
|
|
27
|
+
return obj;
|
|
28
|
+
}
|
|
29
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
30
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
31
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
32
|
+
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;
|
|
33
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
34
|
+
}
|
|
35
|
+
function _ts_metadata(k, v) {
|
|
36
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
37
|
+
}
|
|
38
|
+
function _ts_param(paramIndex, decorator) {
|
|
39
|
+
return function(target, key) {
|
|
40
|
+
decorator(target, key, paramIndex);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
let UserActionPermissionController = class UserActionPermissionController {
|
|
44
|
+
async assignUserActions(dto) {
|
|
45
|
+
return this.permissionService.assignUserActions(dto);
|
|
46
|
+
}
|
|
47
|
+
async getUserActions(userId, query) {
|
|
48
|
+
const actions = await this.permissionService.getUserActions(userId, query.branchId, query.companyId);
|
|
49
|
+
return {
|
|
50
|
+
success: true,
|
|
51
|
+
message: 'User actions retrieved successfully',
|
|
52
|
+
data: actions
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
|
|
56
|
+
constructor(permissionService){
|
|
57
|
+
_define_property(this, "permissionService", void 0);
|
|
58
|
+
this.permissionService = permissionService;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
_ts_decorate([
|
|
62
|
+
(0, _common.Post)('user-actions/assign'),
|
|
63
|
+
(0, _swagger.ApiOperation)({
|
|
64
|
+
summary: 'Assign/remove actions to/from user',
|
|
65
|
+
description: 'Direct permissions. If company feature enabled, branchId is required.'
|
|
66
|
+
}),
|
|
67
|
+
(0, _swagger.ApiResponse)({
|
|
68
|
+
status: 200,
|
|
69
|
+
type: _permissiondto.PermissionOperationResultDto
|
|
70
|
+
}),
|
|
71
|
+
(0, _swagger.ApiBody)({
|
|
72
|
+
type: _permissiondto.AssignUserActionsDto
|
|
73
|
+
}),
|
|
74
|
+
_ts_param(0, (0, _common.Body)()),
|
|
75
|
+
_ts_metadata("design:type", Function),
|
|
76
|
+
_ts_metadata("design:paramtypes", [
|
|
77
|
+
typeof _permissiondto.AssignUserActionsDto === "undefined" ? Object : _permissiondto.AssignUserActionsDto
|
|
78
|
+
]),
|
|
79
|
+
_ts_metadata("design:returntype", Promise)
|
|
80
|
+
], UserActionPermissionController.prototype, "assignUserActions", null);
|
|
81
|
+
_ts_decorate([
|
|
82
|
+
(0, _common.Get)('user-actions/:userId'),
|
|
83
|
+
(0, _swagger.ApiOperation)({
|
|
84
|
+
summary: 'Get user direct actions',
|
|
85
|
+
description: 'Returns direct action permissions for user. Filter by companyId and branchId.'
|
|
86
|
+
}),
|
|
87
|
+
(0, _swagger.ApiResponse)({
|
|
88
|
+
status: 200,
|
|
89
|
+
type: _nestjsshared.SingleResponseDto
|
|
90
|
+
}),
|
|
91
|
+
_ts_param(0, (0, _common.Param)('userId')),
|
|
92
|
+
_ts_param(1, (0, _common.Query)()),
|
|
93
|
+
_ts_metadata("design:type", Function),
|
|
94
|
+
_ts_metadata("design:paramtypes", [
|
|
95
|
+
String,
|
|
96
|
+
typeof _permissiondto.GetUserActionsDto === "undefined" ? Object : _permissiondto.GetUserActionsDto
|
|
97
|
+
]),
|
|
98
|
+
_ts_metadata("design:returntype", Promise)
|
|
99
|
+
], UserActionPermissionController.prototype, "getUserActions", null);
|
|
100
|
+
UserActionPermissionController = _ts_decorate([
|
|
101
|
+
(0, _swagger.ApiTags)('IAM - User Action Permissions'),
|
|
102
|
+
(0, _common.Controller)('iam/permissions'),
|
|
103
|
+
(0, _common.UseGuards)(_nestjsshared.JwtAuthGuard),
|
|
104
|
+
(0, _swagger.ApiBearerAuth)(),
|
|
105
|
+
_ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
|
|
106
|
+
_ts_metadata("design:type", Function),
|
|
107
|
+
_ts_metadata("design:paramtypes", [
|
|
108
|
+
typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
|
|
109
|
+
])
|
|
110
|
+
], UserActionPermissionController);
|