@flusys/nestjs-iam 7.0.2 → 8.0.0-beta.1
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/config/index.d.ts +3 -3
- package/controllers/action.controller.d.ts +4 -4
- package/controllers/company-action-permission.controller.d.ts +2 -2
- package/controllers/index.d.ts +6 -6
- package/controllers/my-permission.controller.d.ts +3 -3
- package/controllers/role-permission.controller.d.ts +4 -4
- package/controllers/role.controller.d.ts +2 -2
- package/controllers/user-action-permission.controller.d.ts +4 -4
- package/docs/iam-swagger.config.d.ts +2 -2
- package/docs/index.d.ts +1 -1
- package/dtos/action.dto.d.ts +2 -2
- package/dtos/index.d.ts +3 -3
- package/entities/action.entity.d.ts +2 -2
- package/entities/index.d.ts +11 -11
- package/entities/permission-with-company.entity.d.ts +1 -1
- package/entities/role-with-company.entity.d.ts +1 -1
- package/entities/role.entity.d.ts +1 -1
- package/entities/user-iam-permission.entity.d.ts +1 -1
- package/enums/index.d.ts +4 -4
- package/fesm/284.js +1262 -0
- package/fesm/867.js +3699 -0
- package/fesm/chunks/364.js +86 -0
- package/fesm/config/index.js +133 -3
- package/fesm/controllers/index.js +18 -7
- package/fesm/docs/index.js +240 -1
- package/fesm/dtos/index.js +1090 -3
- package/fesm/entities/index.js +670 -31
- package/fesm/enums/index.js +97 -4
- package/fesm/helpers/index.js +125 -2
- package/fesm/index.js +806 -11
- package/fesm/interfaces/index.js +17 -3
- package/fesm/modules/index.js +259 -1
- package/fesm/runtime.js +134 -0
- package/fesm/services/index.js +43 -6
- package/fesm/types/index.js +15 -1
- package/helpers/company-access.helper.d.ts +2 -2
- package/helpers/index.d.ts +2 -2
- package/helpers/permission-mode.helper.d.ts +1 -1
- package/index.d.ts +11 -11
- package/interfaces/action.interface.d.ts +2 -2
- package/interfaces/iam-module-options.interface.d.ts +3 -3
- package/interfaces/index.d.ts +3 -3
- package/modules/iam.module.d.ts +2 -2
- package/modules/index.d.ts +1 -1
- package/package.json +30 -37
- package/services/action.service.d.ts +9 -9
- package/services/iam-config.service.d.ts +4 -4
- package/services/iam-datasource.service.d.ts +3 -3
- package/services/index.d.ts +6 -6
- package/services/permission-cache.service.d.ts +5 -5
- package/services/permission.service.d.ts +4 -4
- package/services/role.service.d.ts +8 -8
- package/types/index.d.ts +1 -1
- package/cjs/config/event-actions.js +0 -36
- package/cjs/config/iam.constants.js +0 -11
- package/cjs/config/index.js +0 -20
- package/cjs/config/message-keys.js +0 -71
- package/cjs/controllers/action.controller.js +0 -174
- package/cjs/controllers/action.controller.spec.js +0 -79
- package/cjs/controllers/company-action-permission.controller.js +0 -119
- package/cjs/controllers/company-action-permission.controller.spec.js +0 -65
- package/cjs/controllers/index.js +0 -23
- package/cjs/controllers/my-permission.controller.js +0 -147
- package/cjs/controllers/my-permission.controller.spec.js +0 -128
- package/cjs/controllers/role-permission.controller.js +0 -191
- package/cjs/controllers/role-permission.controller.spec.js +0 -140
- package/cjs/controllers/role.controller.js +0 -102
- package/cjs/controllers/role.controller.spec.js +0 -86
- package/cjs/controllers/user-action-permission.controller.js +0 -129
- package/cjs/controllers/user-action-permission.controller.spec.js +0 -68
- package/cjs/docs/iam-swagger.config.js +0 -209
- package/cjs/docs/iam-swagger.config.spec.js +0 -99
- package/cjs/docs/index.js +0 -18
- package/cjs/dtos/action.dto.js +0 -282
- package/cjs/dtos/index.js +0 -21
- package/cjs/dtos/permission.dto.js +0 -637
- package/cjs/dtos/role.dto.js +0 -155
- package/cjs/entities/action.entity.js +0 -138
- package/cjs/entities/index.js +0 -80
- package/cjs/entities/index.spec.js +0 -56
- package/cjs/entities/permission-base.entity.js +0 -107
- package/cjs/entities/permission-with-company.entity.js +0 -100
- package/cjs/entities/role-base.entity.js +0 -80
- package/cjs/entities/role-with-company.entity.js +0 -55
- package/cjs/entities/role.entity.js +0 -25
- package/cjs/entities/user-iam-permission.entity.js +0 -43
- package/cjs/enums/action-type.enum.js +0 -22
- package/cjs/enums/iam-entity-type.enum.js +0 -17
- package/cjs/enums/iam-permission-type.enum.js +0 -17
- package/cjs/enums/index.js +0 -21
- package/cjs/enums/permission-type.enum.js +0 -16
- package/cjs/helpers/company-access.helper.js +0 -23
- package/cjs/helpers/company-access.helper.spec.js +0 -68
- package/cjs/helpers/index.js +0 -19
- package/cjs/helpers/permission-mode.helper.js +0 -49
- package/cjs/helpers/permission-mode.helper.spec.js +0 -54
- package/cjs/index.js +0 -28
- package/cjs/interfaces/action.interface.js +0 -4
- package/cjs/interfaces/iam-module-options.interface.js +0 -4
- package/cjs/interfaces/index.js +0 -20
- package/cjs/interfaces/role.interface.js +0 -7
- package/cjs/modules/iam.module.js +0 -186
- package/cjs/modules/iam.module.spec.js +0 -282
- package/cjs/modules/index.js +0 -18
- package/cjs/services/action.service.js +0 -337
- package/cjs/services/action.service.spec.js +0 -351
- package/cjs/services/iam-config.service.js +0 -87
- package/cjs/services/iam-config.service.spec.js +0 -110
- package/cjs/services/iam-datasource.service.js +0 -129
- package/cjs/services/iam-datasource.service.spec.js +0 -110
- package/cjs/services/index.js +0 -23
- package/cjs/services/permission-cache.service.js +0 -544
- package/cjs/services/permission-cache.service.spec.js +0 -718
- package/cjs/services/permission.service.js +0 -914
- package/cjs/services/permission.service.spec.js +0 -918
- package/cjs/services/role.service.js +0 -224
- package/cjs/services/role.service.spec.js +0 -347
- package/cjs/types/index.js +0 -18
- package/cjs/types/logic-node.type.js +0 -30
- package/fesm/config/event-actions.js +0 -15
- package/fesm/config/iam.constants.js +0 -1
- package/fesm/config/message-keys.js +0 -35
- package/fesm/controllers/action.controller.js +0 -164
- package/fesm/controllers/action.controller.spec.js +0 -75
- package/fesm/controllers/company-action-permission.controller.js +0 -109
- package/fesm/controllers/company-action-permission.controller.spec.js +0 -61
- package/fesm/controllers/my-permission.controller.js +0 -137
- package/fesm/controllers/my-permission.controller.spec.js +0 -124
- package/fesm/controllers/role-permission.controller.js +0 -181
- package/fesm/controllers/role-permission.controller.spec.js +0 -136
- package/fesm/controllers/role.controller.js +0 -92
- package/fesm/controllers/role.controller.spec.js +0 -82
- package/fesm/controllers/user-action-permission.controller.js +0 -119
- package/fesm/controllers/user-action-permission.controller.spec.js +0 -64
- package/fesm/docs/iam-swagger.config.js +0 -199
- package/fesm/docs/iam-swagger.config.spec.js +0 -95
- package/fesm/dtos/action.dto.js +0 -252
- package/fesm/dtos/permission.dto.js +0 -571
- package/fesm/dtos/role.dto.js +0 -134
- package/fesm/entities/action.entity.js +0 -128
- package/fesm/entities/index.spec.js +0 -52
- package/fesm/entities/permission-base.entity.js +0 -100
- package/fesm/entities/permission-with-company.entity.js +0 -90
- package/fesm/entities/role-base.entity.js +0 -70
- package/fesm/entities/role-with-company.entity.js +0 -45
- package/fesm/entities/role.entity.js +0 -15
- package/fesm/entities/user-iam-permission.entity.js +0 -33
- package/fesm/enums/action-type.enum.js +0 -12
- package/fesm/enums/iam-entity-type.enum.js +0 -7
- package/fesm/enums/iam-permission-type.enum.js +0 -7
- package/fesm/enums/permission-type.enum.js +0 -6
- package/fesm/helpers/company-access.helper.js +0 -18
- package/fesm/helpers/company-access.helper.spec.js +0 -64
- package/fesm/helpers/permission-mode.helper.js +0 -49
- package/fesm/helpers/permission-mode.helper.spec.js +0 -50
- package/fesm/interfaces/action.interface.js +0 -3
- package/fesm/interfaces/iam-module-options.interface.js +0 -3
- package/fesm/interfaces/role.interface.js +0 -4
- package/fesm/modules/iam.module.js +0 -176
- package/fesm/modules/iam.module.spec.js +0 -278
- package/fesm/services/action.service.js +0 -327
- package/fesm/services/action.service.spec.js +0 -347
- package/fesm/services/iam-config.service.js +0 -77
- package/fesm/services/iam-config.service.spec.js +0 -106
- package/fesm/services/iam-datasource.service.js +0 -78
- package/fesm/services/iam-datasource.service.spec.js +0 -106
- package/fesm/services/permission-cache.service.js +0 -527
- package/fesm/services/permission-cache.service.spec.js +0 -714
- package/fesm/services/permission.service.js +0 -904
- package/fesm/services/permission.service.spec.js +0 -914
- package/fesm/services/role.service.js +0 -214
- package/fesm/services/role.service.spec.js +0 -343
- package/fesm/types/logic-node.type.js +0 -27
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export const __rspack_esm_id = 364;
|
|
2
|
+
export const __rspack_esm_ids = [364];
|
|
3
|
+
export const __webpack_modules__ = {
|
|
4
|
+
743(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
5
|
+
/* import */ var _action_entity_js__rspack_import_0 = __webpack_require__(864);
|
|
6
|
+
/* import */ var _permission_base_entity_js__rspack_import_1 = __webpack_require__(423);
|
|
7
|
+
/* import */ var _role_base_entity_js__rspack_import_2 = __webpack_require__(784);
|
|
8
|
+
/* import */ var _permission_with_company_entity_js__rspack_import_3 = __webpack_require__(746);
|
|
9
|
+
/* import */ var _role_with_company_entity_js__rspack_import_4 = __webpack_require__(353);
|
|
10
|
+
/* import */ var _role_entity_js__rspack_import_5 = __webpack_require__(326);
|
|
11
|
+
/* import */ var _user_iam_permission_entity_js__rspack_import_6 = __webpack_require__(489);
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
// Core entities (no company feature)
|
|
25
|
+
const IAMCoreEntities = [
|
|
26
|
+
_action_entity_js__rspack_import_0/* .Action */.r,
|
|
27
|
+
_role_entity_js__rspack_import_5/* .Role */.X,
|
|
28
|
+
_user_iam_permission_entity_js__rspack_import_6/* .UserIamPermission */.y
|
|
29
|
+
];
|
|
30
|
+
// Company-specific entities
|
|
31
|
+
const IAMCompanyEntities = [
|
|
32
|
+
_role_with_company_entity_js__rspack_import_4/* .RoleWithCompany */.g,
|
|
33
|
+
_permission_with_company_entity_js__rspack_import_3/* .UserIamPermissionWithCompany */.t
|
|
34
|
+
];
|
|
35
|
+
// All entities
|
|
36
|
+
const IAMAllEntities = [
|
|
37
|
+
_action_entity_js__rspack_import_0/* .Action */.r,
|
|
38
|
+
_role_entity_js__rspack_import_5/* .Role */.X,
|
|
39
|
+
_role_with_company_entity_js__rspack_import_4/* .RoleWithCompany */.g,
|
|
40
|
+
_user_iam_permission_entity_js__rspack_import_6/* .UserIamPermission */.y,
|
|
41
|
+
_permission_with_company_entity_js__rspack_import_3/* .UserIamPermissionWithCompany */.t
|
|
42
|
+
];
|
|
43
|
+
/**
|
|
44
|
+
* Get IAM entities based on configuration
|
|
45
|
+
* @param enableCompanyFeature - Whether company feature is enabled
|
|
46
|
+
* @param permissionMode - Permission mode: 'FULL' | 'RBAC' | 'DIRECT' (default: 'FULL')
|
|
47
|
+
*/ function getIAMEntitiesByConfig(enableCompanyFeature, permissionMode = 'FULL') {
|
|
48
|
+
const entities = [
|
|
49
|
+
_action_entity_js__rspack_import_0/* .Action */.r
|
|
50
|
+
];
|
|
51
|
+
// Permission entity - always included
|
|
52
|
+
if (enableCompanyFeature) {
|
|
53
|
+
entities.push(_permission_with_company_entity_js__rspack_import_3/* .UserIamPermissionWithCompany */.t);
|
|
54
|
+
} else {
|
|
55
|
+
entities.push(_user_iam_permission_entity_js__rspack_import_6/* .UserIamPermission */.y);
|
|
56
|
+
}
|
|
57
|
+
// Role entity - Only for RBAC or FULL mode (not DIRECT)
|
|
58
|
+
if (permissionMode === 'RBAC' || permissionMode === 'FULL') {
|
|
59
|
+
if (enableCompanyFeature) {
|
|
60
|
+
entities.push(_role_with_company_entity_js__rspack_import_4/* .RoleWithCompany */.g);
|
|
61
|
+
} else {
|
|
62
|
+
entities.push(_role_entity_js__rspack_import_5/* .Role */.X);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return entities;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
69
|
+
$m: () => (/* reexport safe */ _permission_base_entity_js__rspack_import_1.$),
|
|
70
|
+
Xh: () => (/* reexport safe */ _role_entity_js__rspack_import_5.X),
|
|
71
|
+
gP: () => (/* reexport safe */ _role_with_company_entity_js__rspack_import_4.g),
|
|
72
|
+
getIAMEntitiesByConfig: () => (getIAMEntitiesByConfig),
|
|
73
|
+
rc: () => (/* reexport safe */ _action_entity_js__rspack_import_0.r),
|
|
74
|
+
tt: () => (/* reexport safe */ _permission_with_company_entity_js__rspack_import_3.t),
|
|
75
|
+
um: () => (/* reexport safe */ _role_base_entity_js__rspack_import_2.u),
|
|
76
|
+
yi: () => (/* reexport safe */ _user_iam_permission_entity_js__rspack_import_6.y)
|
|
77
|
+
}, {
|
|
78
|
+
Gr: IAMCompanyEntities,
|
|
79
|
+
SB: IAMAllEntities,
|
|
80
|
+
aZ: IAMCoreEntities
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
};
|
package/fesm/config/index.js
CHANGED
|
@@ -1,3 +1,133 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
1
|
+
export const __rspack_esm_id = 565;
|
|
2
|
+
export const __rspack_esm_ids = [565];
|
|
3
|
+
export const __webpack_modules__ = {
|
|
4
|
+
916(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
5
|
+
/**
|
|
6
|
+
* Domain event actions published by the IAM module, alongside the CRUD
|
|
7
|
+
* lifecycle actions every ApiService emits.
|
|
8
|
+
*/ const IAM_EVENT_ACTIONS = {
|
|
9
|
+
PERMISSIONS_ASSIGNED: 'permissions-assigned'
|
|
10
|
+
};
|
|
11
|
+
/** Every entity the IAM module publishes under, ApiService backed or not */ const IAM_EVENT_ENTITIES = {
|
|
12
|
+
ACTION: 'action',
|
|
13
|
+
ROLE: 'role',
|
|
14
|
+
USER_ACTION: 'user_action',
|
|
15
|
+
ROLE_ACTION: 'role_action',
|
|
16
|
+
COMPANY_ACTION: 'company_action',
|
|
17
|
+
USER_ROLE: 'user_role'
|
|
18
|
+
};
|
|
19
|
+
const IAM_EVENT_MODULE = 'iam';
|
|
20
|
+
|
|
21
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
22
|
+
}, {
|
|
23
|
+
H: IAM_EVENT_ENTITIES,
|
|
24
|
+
X: IAM_EVENT_ACTIONS
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
},
|
|
29
|
+
180(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
30
|
+
const IAM_MODULE_OPTIONS = 'IAM_MODULE_OPTIONS';
|
|
31
|
+
|
|
32
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
33
|
+
}, {
|
|
34
|
+
G: IAM_MODULE_OPTIONS
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
},
|
|
39
|
+
434(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
40
|
+
/* import */ var _event_actions_js__rspack_import_0 = __webpack_require__(916);
|
|
41
|
+
/* import */ var _iam_constants_js__rspack_import_1 = __webpack_require__(180);
|
|
42
|
+
/* import */ var _message_keys_js__rspack_import_2 = __webpack_require__(490);
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
48
|
+
G7: () => (/* reexport safe */ _iam_constants_js__rspack_import_1.G),
|
|
49
|
+
GG: () => (/* reexport safe */ _message_keys_js__rspack_import_2.GG),
|
|
50
|
+
HP: () => (/* reexport safe */ _event_actions_js__rspack_import_0.H),
|
|
51
|
+
M_: () => (/* reexport safe */ (/* inlined export _event_actions_js__rspack_import_0 */"iam")),
|
|
52
|
+
P3: () => (/* reexport safe */ _message_keys_js__rspack_import_2.P3),
|
|
53
|
+
Q$: () => (/* reexport safe */ _message_keys_js__rspack_import_2.Q$),
|
|
54
|
+
QW: () => (/* reexport safe */ _message_keys_js__rspack_import_2.QW),
|
|
55
|
+
XV: () => (/* reexport safe */ _event_actions_js__rspack_import_0.X),
|
|
56
|
+
eh: () => (/* reexport safe */ _message_keys_js__rspack_import_2.eh),
|
|
57
|
+
k: () => (/* reexport safe */ _message_keys_js__rspack_import_2.k),
|
|
58
|
+
sb: () => (/* reexport safe */ _message_keys_js__rspack_import_2.sb),
|
|
59
|
+
xI: () => (/* reexport safe */ _message_keys_js__rspack_import_2.xI)
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
},
|
|
64
|
+
490(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
65
|
+
// ==================== IAM MODULE MESSAGE KEYS ====================
|
|
66
|
+
const ACTION_MESSAGES = {
|
|
67
|
+
GET_ALL_SUCCESS: 'action.get.all.success',
|
|
68
|
+
READONLY_UPDATE_FORBIDDEN: 'action.readonly.update.forbidden',
|
|
69
|
+
READONLY_DELETE_FORBIDDEN: 'action.readonly.delete.forbidden'
|
|
70
|
+
};
|
|
71
|
+
const ROLE_MESSAGES = {
|
|
72
|
+
READONLY_UPDATE_FORBIDDEN: 'role.readonly.update.forbidden',
|
|
73
|
+
READONLY_DELETE_FORBIDDEN: 'role.readonly.delete.forbidden'
|
|
74
|
+
};
|
|
75
|
+
const PERMISSION_OPERATION_MESSAGES = {
|
|
76
|
+
PROCESS_SUCCESS: 'permission.process.success',
|
|
77
|
+
ALREADY_EXISTS: 'permission.already.exists',
|
|
78
|
+
USER_REQUIRED: 'permission.user.required'
|
|
79
|
+
};
|
|
80
|
+
const ROLE_PERMISSION_MESSAGES = {
|
|
81
|
+
ACTIONS_SUCCESS: 'role.permission.actions.success',
|
|
82
|
+
USER_ROLES_SUCCESS: 'role.permission.user.roles.success'
|
|
83
|
+
};
|
|
84
|
+
const USER_ACTION_PERMISSION_MESSAGES = {
|
|
85
|
+
GET_SUCCESS: 'user.action.permission.get.success'
|
|
86
|
+
};
|
|
87
|
+
const COMPANY_ACTION_PERMISSION_MESSAGES = {
|
|
88
|
+
GET_SUCCESS: 'company.action.permission.get.success'
|
|
89
|
+
};
|
|
90
|
+
const MY_PERMISSION_MESSAGES = {
|
|
91
|
+
GET_SUCCESS: 'my.permission.get.success',
|
|
92
|
+
MY_ROLES_SUCCESS: 'my.permission.roles.success',
|
|
93
|
+
MY_ACTIONS_SUCCESS: 'my.permission.actions.success'
|
|
94
|
+
};
|
|
95
|
+
const IAM_MODE_MESSAGES = {
|
|
96
|
+
DIRECT_MODE_UNAVAILABLE: 'iam.direct.mode.unavailable',
|
|
97
|
+
RBAC_MODE_UNAVAILABLE: 'iam.rbac.mode.unavailable',
|
|
98
|
+
ROLE_ASSIGNMENT_UNAVAILABLE: 'iam.role.assignment.unavailable'
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
102
|
+
}, {
|
|
103
|
+
GG: COMPANY_ACTION_PERMISSION_MESSAGES,
|
|
104
|
+
P3: PERMISSION_OPERATION_MESSAGES,
|
|
105
|
+
Q$: ACTION_MESSAGES,
|
|
106
|
+
QW: ROLE_MESSAGES,
|
|
107
|
+
eh: ROLE_PERMISSION_MESSAGES,
|
|
108
|
+
k: USER_ACTION_PERMISSION_MESSAGES,
|
|
109
|
+
sb: MY_PERMISSION_MESSAGES,
|
|
110
|
+
xI: IAM_MODE_MESSAGES
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
};
|
|
117
|
+
import { __webpack_require__ } from '../runtime.js';
|
|
118
|
+
var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
|
119
|
+
import * as __rspack_chunk_1 from './index.js';
|
|
120
|
+
__webpack_require__.C(__rspack_chunk_1);
|
|
121
|
+
var __webpack_exports__ = __webpack_exec__(434);var __webpack_exports__ACTION_MESSAGES = __webpack_exports__.Q$;
|
|
122
|
+
var __webpack_exports__COMPANY_ACTION_PERMISSION_MESSAGES = __webpack_exports__.GG;
|
|
123
|
+
var __webpack_exports__IAM_EVENT_ACTIONS = __webpack_exports__.XV;
|
|
124
|
+
var __webpack_exports__IAM_EVENT_ENTITIES = __webpack_exports__.HP;
|
|
125
|
+
var __webpack_exports__IAM_EVENT_MODULE = __webpack_exports__.M_;
|
|
126
|
+
var __webpack_exports__IAM_MODE_MESSAGES = __webpack_exports__.xI;
|
|
127
|
+
var __webpack_exports__IAM_MODULE_OPTIONS = __webpack_exports__.G7;
|
|
128
|
+
var __webpack_exports__MY_PERMISSION_MESSAGES = __webpack_exports__.sb;
|
|
129
|
+
var __webpack_exports__PERMISSION_OPERATION_MESSAGES = __webpack_exports__.P3;
|
|
130
|
+
var __webpack_exports__ROLE_MESSAGES = __webpack_exports__.QW;
|
|
131
|
+
var __webpack_exports__ROLE_PERMISSION_MESSAGES = __webpack_exports__.eh;
|
|
132
|
+
var __webpack_exports__USER_ACTION_PERMISSION_MESSAGES = __webpack_exports__.k;
|
|
133
|
+
export { __webpack_exports__ACTION_MESSAGES as ACTION_MESSAGES, __webpack_exports__COMPANY_ACTION_PERMISSION_MESSAGES as COMPANY_ACTION_PERMISSION_MESSAGES, __webpack_exports__IAM_EVENT_ACTIONS as IAM_EVENT_ACTIONS, __webpack_exports__IAM_EVENT_ENTITIES as IAM_EVENT_ENTITIES, __webpack_exports__IAM_EVENT_MODULE as IAM_EVENT_MODULE, __webpack_exports__IAM_MODE_MESSAGES as IAM_MODE_MESSAGES, __webpack_exports__IAM_MODULE_OPTIONS as IAM_MODULE_OPTIONS, __webpack_exports__MY_PERMISSION_MESSAGES as MY_PERMISSION_MESSAGES, __webpack_exports__PERMISSION_OPERATION_MESSAGES as PERMISSION_OPERATION_MESSAGES, __webpack_exports__ROLE_MESSAGES as ROLE_MESSAGES, __webpack_exports__ROLE_PERMISSION_MESSAGES as ROLE_PERMISSION_MESSAGES, __webpack_exports__USER_ACTION_PERMISSION_MESSAGES as USER_ACTION_PERMISSION_MESSAGES };
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
export const __rspack_esm_id = 24;
|
|
2
|
+
export const __rspack_esm_ids = [24];
|
|
3
|
+
export const __webpack_modules__ = {};
|
|
4
|
+
import { __webpack_require__ } from '../runtime.js';
|
|
5
|
+
var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
|
6
|
+
import * as __rspack_chunk_1 from '../867.js';
|
|
7
|
+
__webpack_require__.C(__rspack_chunk_1);
|
|
8
|
+
import * as __rspack_chunk_2 from '../284.js';
|
|
9
|
+
__webpack_require__.C(__rspack_chunk_2);
|
|
10
|
+
import * as __rspack_chunk_3 from './index.js';
|
|
11
|
+
__webpack_require__.C(__rspack_chunk_3);
|
|
12
|
+
var __webpack_exports__ = __webpack_exec__(575);var __webpack_exports__ActionController = __webpack_exports__.ZX;
|
|
13
|
+
var __webpack_exports__CompanyActionPermissionController = __webpack_exports__.jj;
|
|
14
|
+
var __webpack_exports__MyPermissionController = __webpack_exports__.ig;
|
|
15
|
+
var __webpack_exports__RoleController = __webpack_exports__.lk;
|
|
16
|
+
var __webpack_exports__RolePermissionController = __webpack_exports__.uv;
|
|
17
|
+
var __webpack_exports__UserActionPermissionController = __webpack_exports__.NF;
|
|
18
|
+
export { __webpack_exports__ActionController as ActionController, __webpack_exports__CompanyActionPermissionController as CompanyActionPermissionController, __webpack_exports__MyPermissionController as MyPermissionController, __webpack_exports__RoleController as RoleController, __webpack_exports__RolePermissionController as RolePermissionController, __webpack_exports__UserActionPermissionController as UserActionPermissionController };
|
package/fesm/docs/index.js
CHANGED
|
@@ -1 +1,240 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const __rspack_esm_id = 428;
|
|
2
|
+
export const __rspack_esm_ids = [428];
|
|
3
|
+
export const __webpack_modules__ = {
|
|
4
|
+
438(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
5
|
+
|
|
6
|
+
// EXPORTS
|
|
7
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
8
|
+
s: () => (/* reexport */ iamSwaggerConfig)
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
// EXTERNAL MODULE: ./projects/nestjs-iam/src/enums/permission-type.enum.ts
|
|
12
|
+
var permission_type_enum = __webpack_require__(841);
|
|
13
|
+
;// CONCATENATED MODULE: ./projects/nestjs-iam/src/docs/iam-swagger.config.ts
|
|
14
|
+
|
|
15
|
+
/** Auth-related tags that should always be excluded from IAM API docs */ const AUTH_RELATED_TAGS = [
|
|
16
|
+
'Authentication',
|
|
17
|
+
'Users',
|
|
18
|
+
'Companies',
|
|
19
|
+
'Branches',
|
|
20
|
+
'User Permissions',
|
|
21
|
+
'Company Selection'
|
|
22
|
+
];
|
|
23
|
+
function iamSwaggerConfig(enableCompanyFeature = false, permissionMode = permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL, databaseMode = 'single') {
|
|
24
|
+
const multiTenantNote = databaseMode === 'multi-tenant' ? `\n> **Multi-Tenant Mode**: Include \`x-tenant-id\` header to target a specific tenant database.\n` : '';
|
|
25
|
+
const excludeSchemaProperties = enableCompanyFeature ? [] : [
|
|
26
|
+
// DTOs with companyId and branchId
|
|
27
|
+
{
|
|
28
|
+
schemaName: 'AssignUserActionsDto',
|
|
29
|
+
properties: [
|
|
30
|
+
'companyId',
|
|
31
|
+
'branchId'
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
schemaName: 'AssignUserRolesDto',
|
|
36
|
+
properties: [
|
|
37
|
+
'companyId',
|
|
38
|
+
'branchId'
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
schemaName: 'GetUserActionsDto',
|
|
43
|
+
properties: [
|
|
44
|
+
'companyId',
|
|
45
|
+
'branchId'
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
schemaName: 'GetUserRolesDto',
|
|
50
|
+
properties: [
|
|
51
|
+
'companyId',
|
|
52
|
+
'branchId'
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
schemaName: 'ActionTreeForPermissionDto',
|
|
57
|
+
properties: [
|
|
58
|
+
'companyId'
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
// Response DTOs with branchId
|
|
62
|
+
{
|
|
63
|
+
schemaName: 'UserActionResponseDto',
|
|
64
|
+
properties: [
|
|
65
|
+
'branchId'
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
schemaName: 'UserRoleResponseDto',
|
|
70
|
+
properties: [
|
|
71
|
+
'branchId'
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
// Company-related DTOs (entire schemas hidden via tag exclusion, but just in case)
|
|
75
|
+
{
|
|
76
|
+
schemaName: 'AssignCompanyActionsDto',
|
|
77
|
+
properties: [
|
|
78
|
+
'companyId'
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
schemaName: 'CompanyActionResponseDto',
|
|
83
|
+
properties: [
|
|
84
|
+
'companyId'
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
];
|
|
88
|
+
// Hide query parameters for GET endpoints when company feature is disabled
|
|
89
|
+
const excludeQueryParameters = enableCompanyFeature ? [] : [
|
|
90
|
+
{
|
|
91
|
+
pathPattern: '/iam/permissions/user-actions/*',
|
|
92
|
+
method: 'get',
|
|
93
|
+
parameters: [
|
|
94
|
+
'companyId',
|
|
95
|
+
'branchId'
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
pathPattern: '/iam/permissions/user-roles/*',
|
|
100
|
+
method: 'get',
|
|
101
|
+
parameters: [
|
|
102
|
+
'companyId',
|
|
103
|
+
'branchId'
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
];
|
|
107
|
+
// Build exclude tags list: always exclude Auth tags + conditionally exclude based on permission mode
|
|
108
|
+
const excludeTags = [
|
|
109
|
+
...AUTH_RELATED_TAGS
|
|
110
|
+
];
|
|
111
|
+
// Hide company-related IAM endpoints when company feature is disabled
|
|
112
|
+
if (!enableCompanyFeature) {
|
|
113
|
+
excludeTags.push('IAM - Company Action Permissions');
|
|
114
|
+
}
|
|
115
|
+
// Conditionally exclude endpoints based on permission mode
|
|
116
|
+
if (permissionMode === permission_type_enum/* .IAMPermissionMode.RBAC */.w.RBAC) {
|
|
117
|
+
// RBAC only - hide direct user action endpoints
|
|
118
|
+
excludeTags.push('IAM - Permissions (Direct)');
|
|
119
|
+
} else if (permissionMode === permission_type_enum/* .IAMPermissionMode.DIRECT */.w.DIRECT) {
|
|
120
|
+
// Direct only - hide RBAC endpoints
|
|
121
|
+
excludeTags.push('IAM - Permissions (RBAC)');
|
|
122
|
+
excludeTags.push('IAM - Roles'); // Roles are only used in RBAC
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
title: 'IAM API',
|
|
126
|
+
description: `
|
|
127
|
+
## Identity & Access Management API
|
|
128
|
+
${multiTenantNote}
|
|
129
|
+
Advanced permission system with flexible modes: RBAC, Direct Permissions, or both.
|
|
130
|
+
|
|
131
|
+
### Current Configuration
|
|
132
|
+
- **Permission Mode**: ${permissionMode === permission_type_enum/* .IAMPermissionMode.RBAC */.w.RBAC ? '**RBAC** (Role-Based Access Control)' : permissionMode === permission_type_enum/* .IAMPermissionMode.DIRECT */.w.DIRECT ? '**DIRECT** (Direct User Permissions)' : '**FULL** (RBAC + Direct)'}${enableCompanyFeature ? '\n- **Company Feature**: Enabled (Multi-tenant with company/branch scoping)' : '\n- **Company Feature**: Disabled'}
|
|
133
|
+
|
|
134
|
+
### Features Based on Mode
|
|
135
|
+
|
|
136
|
+
${permissionMode === permission_type_enum/* .IAMPermissionMode.RBAC */.w.RBAC || permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? `#### RBAC Features (Active)
|
|
137
|
+
- **Roles**: Create company-scoped roles${enableCompanyFeature ? ' (auto-filtered by user company)' : ''}
|
|
138
|
+
- **Role-Actions**: Assign actions to roles
|
|
139
|
+
- **User-Roles**: Assign roles to users${enableCompanyFeature ? ' at branch level' : ''}
|
|
140
|
+
` : ''}${permissionMode === permission_type_enum/* .IAMPermissionMode.DIRECT */.w.DIRECT || permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? `#### Direct Permission Features (Active)
|
|
141
|
+
- **User-Actions**: Direct action assignment to users${enableCompanyFeature ? ' at branch level' : ''}
|
|
142
|
+
` : ''}${enableCompanyFeature ? `#### Company Features (Active)
|
|
143
|
+
- **Company-Action Whitelist**: Control which actions are available per company
|
|
144
|
+
- **Branch-Based Scoping**: Permissions scoped to specific branches
|
|
145
|
+
- **Auto-Filtering**: Roles automatically filtered by user's company
|
|
146
|
+
- **Action Tree Filtering**: Available actions filtered by company whitelist
|
|
147
|
+
` : ''}
|
|
148
|
+
### Core Concepts
|
|
149
|
+
|
|
150
|
+
#### Actions
|
|
151
|
+
Represent permissions in the system. Can be hierarchical.
|
|
152
|
+
|
|
153
|
+
**Action Types:**
|
|
154
|
+
- \`menu\` - Menu visibility (actions with type='menu' are used as menus)
|
|
155
|
+
- \`endpoint\` - API endpoint access
|
|
156
|
+
- \`frontend\` - Frontend feature toggles
|
|
157
|
+
${permissionMode === permission_type_enum/* .IAMPermissionMode.RBAC */.w.RBAC || permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? `
|
|
158
|
+
#### Roles
|
|
159
|
+
Collections of actions that can be assigned to users.${enableCompanyFeature ? ' Scoped to companies.' : ' Global across the system.'}
|
|
160
|
+
` : ''}${enableCompanyFeature ? `
|
|
161
|
+
#### Company-Action Whitelist
|
|
162
|
+
Controls which actions are available to a company. Users/roles can only use whitelisted actions.
|
|
163
|
+
|
|
164
|
+
**Flow:**
|
|
165
|
+
1. Admin assigns actions to company (whitelist)
|
|
166
|
+
2. Only whitelisted actions appear in permission assignment UIs
|
|
167
|
+
3. Users/roles cannot be assigned non-whitelisted actions
|
|
168
|
+
` : ''}
|
|
169
|
+
### Permission Resolution
|
|
170
|
+
|
|
171
|
+
${permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? `1. **Company-Action Whitelist** - Filter by company (if enabled)
|
|
172
|
+
2. **UserAction (DENY)** - Explicit denials take precedence
|
|
173
|
+
3. **UserAction (GRANT)** - Direct user grants
|
|
174
|
+
4. **UserRole → RoleAction** - Inherited from assigned roles
|
|
175
|
+
5. **Action Permission Logic** - Complex AND/OR rules` : permissionMode === permission_type_enum/* .IAMPermissionMode.RBAC */.w.RBAC ? `1. **Company-Action Whitelist** - Filter by company (if enabled)
|
|
176
|
+
2. **UserRole → RoleAction** - Actions inherited from roles
|
|
177
|
+
3. **Action Permission Logic** - Complex AND/OR rules` : `1. **Company-Action Whitelist** - Filter by company (if enabled)
|
|
178
|
+
2. **UserAction (DENY)** - Explicit denials take precedence
|
|
179
|
+
3. **UserAction (GRANT)** - Direct user grants
|
|
180
|
+
4. **Action Permission Logic** - Complex AND/OR rules`}
|
|
181
|
+
|
|
182
|
+
### API Endpoints Summary
|
|
183
|
+
|
|
184
|
+
#### Available Endpoints
|
|
185
|
+
- ✅ **Actions**: CRUD operations, tree view${enableCompanyFeature ? ', filtered tree for permissions' : ''}${permissionMode === permission_type_enum/* .IAMPermissionMode.RBAC */.w.RBAC || permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? `
|
|
186
|
+
- ✅ **Roles**: CRUD operations${enableCompanyFeature ? ' (auto-filtered by company)' : ''}
|
|
187
|
+
- ✅ **Role-Actions**: Assign actions to roles, get role actions
|
|
188
|
+
- ✅ **User-Roles**: Assign roles to users, get user roles` : `
|
|
189
|
+
- ❌ **Roles**: Disabled (RBAC mode not active)`}${permissionMode === permission_type_enum/* .IAMPermissionMode.DIRECT */.w.DIRECT || permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? `
|
|
190
|
+
- ✅ **User-Actions**: Direct action assignment to users` : `
|
|
191
|
+
- ❌ **User-Actions**: Disabled (DIRECT mode not active)`}${enableCompanyFeature ? `
|
|
192
|
+
- ✅ **Company-Actions**: Whitelist actions for companies` : `
|
|
193
|
+
- ❌ **Company-Actions**: Disabled (company feature not enabled)`}
|
|
194
|
+
- ✅ **My Permissions**: Get current user's complete permissions (includes menu-type actions)
|
|
195
|
+
|
|
196
|
+
### Best Practices
|
|
197
|
+
|
|
198
|
+
1. **Action Codes**: Use meaningful codes like \`user.create\`, \`order.view\`
|
|
199
|
+
2. **Hierarchical Actions**: Group related actions (use parentId for hierarchy)${permissionMode === permission_type_enum/* .IAMPermissionMode.RBAC */.w.RBAC || permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? `
|
|
200
|
+
3. **Role Design**: Create roles for common permission patterns` : ''}${permissionMode === permission_type_enum/* .IAMPermissionMode.DIRECT */.w.DIRECT || permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? `
|
|
201
|
+
${permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? '4' : '3'}. **Direct Actions**: Use sparingly for exceptions` : ''}${enableCompanyFeature ? `
|
|
202
|
+
${permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? '5' : '4'}. **Company Whitelisting**: Set up action whitelist before assigning permissions
|
|
203
|
+
${permissionMode === permission_type_enum/* .IAMPermissionMode.FULL */.w.FULL ? '6' : '5'}. **Branch Scoping**: Use branches for location-based access control` : ''}
|
|
204
|
+
`,
|
|
205
|
+
version: '1.0',
|
|
206
|
+
path: 'api/docs/iam',
|
|
207
|
+
bearerAuth: true,
|
|
208
|
+
excludeSchemaProperties,
|
|
209
|
+
excludeTags,
|
|
210
|
+
excludeQueryParameters
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
;// CONCATENATED MODULE: ./projects/nestjs-iam/src/docs/index.ts
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
},
|
|
219
|
+
841(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
220
|
+
var IAMPermissionMode = /*#__PURE__*/ function(IAMPermissionMode) {
|
|
221
|
+
IAMPermissionMode[IAMPermissionMode["RBAC"] = 1] = "RBAC";
|
|
222
|
+
IAMPermissionMode[IAMPermissionMode["DIRECT"] = 2] = "DIRECT";
|
|
223
|
+
IAMPermissionMode[IAMPermissionMode["FULL"] = 3] = "FULL";
|
|
224
|
+
return IAMPermissionMode;
|
|
225
|
+
}({});
|
|
226
|
+
|
|
227
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
228
|
+
w: () => (IAMPermissionMode)
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
},
|
|
233
|
+
|
|
234
|
+
};
|
|
235
|
+
import { __webpack_require__ } from '../runtime.js';
|
|
236
|
+
var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
|
237
|
+
import * as __rspack_chunk_1 from './index.js';
|
|
238
|
+
__webpack_require__.C(__rspack_chunk_1);
|
|
239
|
+
var __webpack_exports__ = __webpack_exec__(438);var __webpack_exports__iamSwaggerConfig = __webpack_exports__.s;
|
|
240
|
+
export { __webpack_exports__iamSwaggerConfig as iamSwaggerConfig };
|