rez_core 6.5.58 → 6.5.61
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/app.module.js +3 -5
- package/dist/app.module.js.map +1 -1
- package/dist/core.module.js +38 -63
- package/dist/core.module.js.map +1 -1
- package/dist/migrations/1732612800000-AddEntityJsonGinIndex.d.ts +6 -0
- package/dist/migrations/1732612800000-AddEntityJsonGinIndex.js +32 -0
- package/dist/migrations/1732612800000-AddEntityJsonGinIndex.js.map +1 -0
- package/dist/module/auth/strategies/jwt.strategy.d.ts +1 -2
- package/dist/module/auth/strategies/jwt.strategy.js +2 -3
- package/dist/module/auth/strategies/jwt.strategy.js.map +1 -1
- package/dist/module/dashboard/dashboard.module.js +1 -1
- package/dist/module/dashboard/dashboard.module.js.map +1 -1
- package/dist/module/dashboard/service/dashboard.service.js +2 -1
- package/dist/module/dashboard/service/dashboard.service.js.map +1 -1
- package/dist/module/enterprise/controller/organization.controller.d.ts +4 -12
- package/dist/module/enterprise/controller/organization.controller.js +8 -64
- package/dist/module/enterprise/controller/organization.controller.js.map +1 -1
- package/dist/module/enterprise/enterprise.module.js +15 -10
- package/dist/module/enterprise/enterprise.module.js.map +1 -1
- package/dist/module/enterprise/entity/enterprise.entity.d.ts +3 -1
- package/dist/module/enterprise/entity/enterprise.entity.js +12 -4
- package/dist/module/enterprise/entity/enterprise.entity.js.map +1 -1
- package/dist/module/enterprise/entity/organization-app-mapping.entity.d.ts +1 -6
- package/dist/module/enterprise/entity/organization-app-mapping.entity.js +4 -21
- package/dist/module/enterprise/entity/organization-app-mapping.entity.js.map +1 -1
- package/dist/module/enterprise/entity/organization.entity.d.ts +17 -3
- package/dist/module/enterprise/entity/organization.entity.js +73 -11
- package/dist/module/enterprise/entity/organization.entity.js.map +1 -1
- package/dist/module/enterprise/repository/enterprise.repository.d.ts +2 -4
- package/dist/module/enterprise/repository/enterprise.repository.js +4 -19
- package/dist/module/enterprise/repository/enterprise.repository.js.map +1 -1
- package/dist/module/enterprise/service/brand.service.d.ts +3 -0
- package/dist/module/enterprise/service/brand.service.js +17 -0
- package/dist/module/enterprise/service/brand.service.js.map +1 -1
- package/dist/module/enterprise/service/enterprise.service.d.ts +2 -2
- package/dist/module/enterprise/service/enterprise.service.js +4 -6
- package/dist/module/enterprise/service/enterprise.service.js.map +1 -1
- package/dist/module/enterprise/service/organization.service.d.ts +6 -6
- package/dist/module/enterprise/service/organization.service.js +27 -109
- package/dist/module/enterprise/service/organization.service.js.map +1 -1
- package/dist/module/entity_json/controller/entity_json.controller.d.ts +2 -9
- package/dist/module/entity_json/controller/entity_json.controller.js.map +1 -1
- package/dist/module/entity_json/entity/entityJson.entity.d.ts +2 -1
- package/dist/module/entity_json/entity/entityJson.entity.js +5 -1
- package/dist/module/entity_json/entity/entityJson.entity.js.map +1 -1
- package/dist/module/entity_json/entity_json.module.js +7 -2
- package/dist/module/entity_json/entity_json.module.js.map +1 -1
- package/dist/module/entity_json/service/entity_json.service.d.ts +2 -10
- package/dist/module/entity_json/service/entity_json.service.js +101 -25
- package/dist/module/entity_json/service/entity_json.service.js.map +1 -1
- package/dist/module/filter/controller/filter.controller.d.ts +12 -0
- package/dist/module/filter/controller/filter.controller.js +1 -1
- package/dist/module/filter/controller/filter.controller.js.map +1 -1
- package/dist/module/filter/filter.module.js +11 -2
- package/dist/module/filter/filter.module.js.map +1 -1
- package/dist/module/filter/service/filter.service.d.ts +38 -2
- package/dist/module/filter/service/filter.service.js +43 -50
- package/dist/module/filter/service/filter.service.js.map +1 -1
- package/dist/module/filter/service/flatjson-filter.service.d.ts +32 -0
- package/dist/module/filter/service/flatjson-filter.service.js +632 -0
- package/dist/module/filter/service/flatjson-filter.service.js.map +1 -0
- package/dist/module/filter/service/saved-filter.service.d.ts +3 -2
- package/dist/module/filter/service/saved-filter.service.js +14 -18
- package/dist/module/filter/service/saved-filter.service.js.map +1 -1
- package/dist/module/integration/service/integration.service.d.ts +1 -0
- package/dist/module/integration/service/integration.service.js +2 -1
- package/dist/module/integration/service/integration.service.js.map +1 -1
- package/dist/module/integration/service/wrapper.service.js +1 -0
- package/dist/module/integration/service/wrapper.service.js.map +1 -1
- package/dist/module/layout/controller/layout.controller.d.ts +3 -1
- package/dist/module/layout/controller/layout.controller.js +7 -3
- package/dist/module/layout/controller/layout.controller.js.map +1 -1
- package/dist/module/layout/entity/header-section.entity.d.ts +2 -0
- package/dist/module/layout/entity/header-section.entity.js +8 -0
- package/dist/module/layout/entity/header-section.entity.js.map +1 -1
- package/dist/module/layout/layout.module.js +2 -1
- package/dist/module/layout/layout.module.js.map +1 -1
- package/dist/module/layout/repository/header-section.repository.d.ts +1 -0
- package/dist/module/layout/repository/header-section.repository.js +5 -0
- package/dist/module/layout/repository/header-section.repository.js.map +1 -1
- package/dist/module/layout/service/header-section.service.d.ts +1 -1
- package/dist/module/layout/service/header-section.service.js +1 -1
- package/dist/module/layout/service/header-section.service.js.map +1 -1
- package/dist/module/linked_attributes/controller/linked_attributes.controller.d.ts +41 -0
- package/dist/module/linked_attributes/controller/linked_attributes.controller.js +90 -0
- package/dist/module/linked_attributes/controller/linked_attributes.controller.js.map +1 -1
- package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.d.ts +13 -0
- package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.js +64 -0
- package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.js.map +1 -0
- package/dist/module/linked_attributes/linked_attributes.module.js +8 -1
- package/dist/module/linked_attributes/linked_attributes.module.js.map +1 -1
- package/dist/module/linked_attributes/service/linked_attributes.service.d.ts +65 -1
- package/dist/module/linked_attributes/service/linked_attributes.service.js +287 -2
- package/dist/module/linked_attributes/service/linked_attributes.service.js.map +1 -1
- package/dist/module/listmaster/service/list-master.service.js +8 -1
- package/dist/module/listmaster/service/list-master.service.js.map +1 -1
- package/dist/module/meta/controller/app-master.controller.js.map +1 -0
- package/dist/module/meta/controller/attribute-master.controller.d.ts +3 -0
- package/dist/module/meta/controller/attribute-master.controller.js +12 -0
- package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
- package/dist/module/meta/controller/meta.controller.d.ts +6 -1
- package/dist/module/meta/controller/meta.controller.js +19 -1
- package/dist/module/meta/controller/meta.controller.js.map +1 -1
- package/dist/module/meta/entity/app-master.entity.d.ts +13 -0
- package/dist/module/{app_master → meta}/entity/app-master.entity.js +12 -30
- package/dist/module/meta/entity/app-master.entity.js.map +1 -0
- package/dist/module/meta/entity/entity-master.entity.d.ts +1 -0
- package/dist/module/meta/entity/entity-master.entity.js +8 -1
- package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
- package/dist/module/meta/entity.module.js +14 -3
- package/dist/module/meta/entity.module.js.map +1 -1
- package/dist/module/{app_master → meta}/repository/app-master.repository.d.ts +2 -2
- package/dist/module/{app_master → meta}/repository/app-master.repository.js +4 -4
- package/dist/module/meta/repository/app-master.repository.js.map +1 -0
- package/dist/module/meta/service/app-master.service.js.map +1 -0
- package/dist/module/meta/service/attribute-master.service.d.ts +6 -1
- package/dist/module/meta/service/attribute-master.service.js +22 -2
- package/dist/module/meta/service/attribute-master.service.js.map +1 -1
- package/dist/module/meta/service/entity-master.service.js +1 -0
- package/dist/module/meta/service/entity-master.service.js.map +1 -1
- package/dist/module/meta/service/entity-relation.service.d.ts +4 -3
- package/dist/module/meta/service/entity-relation.service.js +10 -4
- package/dist/module/meta/service/entity-relation.service.js.map +1 -1
- package/dist/module/meta/service/entity-service-impl.service.d.ts +1 -1
- package/dist/module/meta/service/entity-service-impl.service.js +14 -10
- package/dist/module/meta/service/entity-service-impl.service.js.map +1 -1
- package/dist/module/meta/service/entity-table.service.d.ts +5 -4
- package/dist/module/meta/service/entity-table.service.js +45 -24
- package/dist/module/meta/service/entity-table.service.js.map +1 -1
- package/dist/module/meta/service/populate-meta.service.d.ts +13 -0
- package/dist/module/{enterprise → meta}/service/populate-meta.service.js +8 -2
- package/dist/module/meta/service/populate-meta.service.js.map +1 -0
- package/dist/module/meta/service/resolver.service.d.ts +1 -1
- package/dist/module/meta/service/resolver.service.js +6 -3
- package/dist/module/meta/service/resolver.service.js.map +1 -1
- package/dist/module/module/controller/module-access.controller.d.ts +4 -3
- package/dist/module/module/controller/module-access.controller.js +8 -13
- package/dist/module/module/controller/module-access.controller.js.map +1 -1
- package/dist/module/module/entity/menu.entity.d.ts +3 -6
- package/dist/module/module/entity/menu.entity.js +10 -19
- package/dist/module/module/entity/menu.entity.js.map +1 -1
- package/dist/module/module/entity/module-access.entity.d.ts +1 -15
- package/dist/module/module/entity/module-access.entity.js +3 -49
- package/dist/module/module/entity/module-access.entity.js.map +1 -1
- package/dist/module/module/entity/module-action.entity.d.ts +2 -4
- package/dist/module/module/entity/module-action.entity.js +6 -11
- package/dist/module/module/entity/module-action.entity.js.map +1 -1
- package/dist/module/module/entity/module.entity.d.ts +5 -3
- package/dist/module/module/entity/module.entity.js +18 -8
- package/dist/module/module/entity/module.entity.js.map +1 -1
- package/dist/module/module/module.module.d.ts +1 -1
- package/dist/module/module/module.module.js +7 -5
- package/dist/module/module/module.module.js.map +1 -1
- package/dist/module/module/repository/menu.repository.d.ts +3 -3
- package/dist/module/module/repository/menu.repository.js +27 -38
- package/dist/module/module/repository/menu.repository.js.map +1 -1
- package/dist/module/module/repository/module-access.repository.d.ts +6 -6
- package/dist/module/module/repository/module-access.repository.js +50 -100
- package/dist/module/module/repository/module-access.repository.js.map +1 -1
- package/dist/module/module/service/menu.service.d.ts +4 -2
- package/dist/module/module/service/menu.service.js +10 -7
- package/dist/module/module/service/menu.service.js.map +1 -1
- package/dist/module/module/service/module-access.service.d.ts +10 -7
- package/dist/module/module/service/module-access.service.js +24 -22
- package/dist/module/module/service/module-access.service.js.map +1 -1
- package/dist/module/notification/entity/notification.entity.d.ts +2 -17
- package/dist/module/notification/entity/notification.entity.js +2 -68
- package/dist/module/notification/entity/notification.entity.js.map +1 -1
- package/dist/module/notification/notification.module.js +4 -3
- package/dist/module/notification/notification.module.js.map +1 -1
- package/dist/module/notification/service/email.service.d.ts +0 -1
- package/dist/module/notification/service/email.service.js +0 -14
- package/dist/module/notification/service/email.service.js.map +1 -1
- package/dist/module/notification/service/notification.service.d.ts +3 -1
- package/dist/module/notification/service/notification.service.js +5 -2
- package/dist/module/notification/service/notification.service.js.map +1 -1
- package/dist/module/notification/service/otp.service.d.ts +2 -2
- package/dist/module/notification/service/otp.service.js +5 -4
- package/dist/module/notification/service/otp.service.js.map +1 -1
- package/dist/module/user/controller/login.controller.d.ts +3 -1
- package/dist/module/user/controller/login.controller.js +6 -2
- package/dist/module/user/controller/login.controller.js.map +1 -1
- package/dist/module/user/controller/user.controller.d.ts +2 -0
- package/dist/module/user/controller/user.controller.js +13 -0
- package/dist/module/user/controller/user.controller.js.map +1 -1
- package/dist/module/user/dto/create-user.dto.d.ts +3 -6
- package/dist/module/user/dto/create-user.dto.js +11 -17
- package/dist/module/user/dto/create-user.dto.js.map +1 -1
- package/dist/module/user/entity/role.entity.d.ts +6 -18
- package/dist/module/user/entity/role.entity.js +19 -64
- package/dist/module/user/entity/role.entity.js.map +1 -1
- package/dist/module/user/entity/user-role-mapping.entity.d.ts +0 -10
- package/dist/module/user/entity/user-role-mapping.entity.js +1 -33
- package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
- package/dist/module/user/entity/user-session.entity.d.ts +2 -0
- package/dist/module/user/entity/user-session.entity.js +20 -2
- package/dist/module/user/entity/user-session.entity.js.map +1 -1
- package/dist/module/user/entity/user.entity.d.ts +5 -17
- package/dist/module/user/entity/user.entity.js +15 -61
- package/dist/module/user/entity/user.entity.js.map +1 -1
- package/dist/module/user/repository/role.repository.d.ts +2 -7
- package/dist/module/user/repository/role.repository.js +8 -23
- package/dist/module/user/repository/role.repository.js.map +1 -1
- package/dist/module/user/repository/user-role-mapping.repository.d.ts +0 -1
- package/dist/module/user/repository/user-role-mapping.repository.js +0 -3
- package/dist/module/user/repository/user-role-mapping.repository.js.map +1 -1
- package/dist/module/user/repository/user.repository.d.ts +2 -5
- package/dist/module/user/repository/user.repository.js +7 -26
- package/dist/module/user/repository/user.repository.js.map +1 -1
- package/dist/module/user/repository/userSession.repository.d.ts +0 -1
- package/dist/module/user/repository/userSession.repository.js +0 -3
- package/dist/module/user/repository/userSession.repository.js.map +1 -1
- package/dist/module/user/service/login.service.d.ts +5 -3
- package/dist/module/user/service/login.service.js +42 -43
- package/dist/module/user/service/login.service.js.map +1 -1
- package/dist/module/user/service/role.service.d.ts +11 -24
- package/dist/module/user/service/role.service.js +40 -54
- package/dist/module/user/service/role.service.js.map +1 -1
- package/dist/module/user/service/user-role-mapping.service.d.ts +0 -2
- package/dist/module/user/service/user-role-mapping.service.js +0 -6
- package/dist/module/user/service/user-role-mapping.service.js.map +1 -1
- package/dist/module/user/service/user-session.service.d.ts +4 -3
- package/dist/module/user/service/user-session.service.js +11 -10
- package/dist/module/user/service/user-session.service.js.map +1 -1
- package/dist/module/user/service/user.service.d.ts +22 -33
- package/dist/module/user/service/user.service.js +58 -66
- package/dist/module/user/service/user.service.js.map +1 -1
- package/dist/module/user/user.module.js +7 -2
- package/dist/module/user/user.module.js.map +1 -1
- package/dist/module/workflow/repository/action-data.repository.d.ts +1 -1
- package/dist/module/workflow/repository/action-data.repository.js +8 -6
- package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
- package/dist/module/workflow/repository/action.repository.d.ts +1 -1
- package/dist/module/workflow/repository/action.repository.js +10 -10
- package/dist/module/workflow/repository/action.repository.js.map +1 -1
- package/dist/module/workflow/repository/form-master.repository.d.ts +1 -1
- package/dist/module/workflow/repository/form-master.repository.js +2 -2
- package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
- package/dist/module/workflow/service/action-data.service.js +2 -1
- package/dist/module/workflow/service/action-data.service.js.map +1 -1
- package/dist/module/workflow/service/action.service.js +2 -2
- package/dist/module/workflow/service/action.service.js.map +1 -1
- package/dist/module/workflow/service/comm-template.service.js +2 -0
- package/dist/module/workflow/service/comm-template.service.js.map +1 -1
- package/dist/module/workflow/service/entity-modification.service.js +1 -0
- package/dist/module/workflow/service/entity-modification.service.js.map +1 -1
- package/dist/module/workflow/service/form-master.service.js +2 -2
- package/dist/module/workflow/service/form-master.service.js.map +1 -1
- package/dist/module/workflow/service/populate-workflow.service.d.ts +1 -1
- package/dist/module/workflow/service/populate-workflow.service.js +1 -1
- package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
- package/dist/module/workflow/service/task.service.js +3 -0
- package/dist/module/workflow/service/task.service.js.map +1 -1
- package/dist/module/workflow/service/workflow-meta.service.js +7 -2
- package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
- package/dist/module/workflow/service/workflow.service.js +2 -2
- package/dist/module/workflow/service/workflow.service.js.map +1 -1
- package/dist/module/workflow/workflow.module.js +0 -2
- package/dist/module/workflow/workflow.module.js.map +1 -1
- package/dist/module/workflow-automation/service/workflow-automation.service.js +6 -11
- package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
- package/dist/module/workflow-automation/workflow-automation.module.js +1 -3
- package/dist/module/workflow-automation/workflow-automation.module.js.map +1 -1
- package/dist/module/workflow-schedule/service/workflow-schedule.service.js +2 -0
- package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +1 -1
- package/dist/table.config.d.ts +5 -3
- package/dist/table.config.js +3 -3
- package/dist/table.config.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/app.module.ts +5 -7
- package/src/core.module.ts +44 -58
- package/src/migrations/1732612800000-AddEntityJsonGinIndex.ts +41 -0
- package/src/module/auth/strategies/jwt.strategy.ts +2 -4
- package/src/module/dashboard/dashboard.module.ts +3 -3
- package/src/module/dashboard/service/dashboard.service.ts +2 -1
- package/src/module/enterprise/controller/organization.controller.ts +4 -60
- package/src/module/enterprise/enterprise.module.ts +18 -16
- package/src/module/enterprise/entity/enterprise.entity.ts +11 -5
- package/src/module/enterprise/entity/organization-app-mapping.entity.ts +4 -18
- package/src/module/enterprise/entity/organization.entity.ts +58 -11
- package/src/module/enterprise/repository/enterprise.repository.ts +4 -26
- package/src/module/enterprise/service/brand.service.ts +5 -75
- package/src/module/enterprise/service/enterprise.service.ts +4 -12
- package/src/module/enterprise/service/organization.service.ts +28 -151
- package/src/module/entity_json/controller/entity_json.controller.ts +13 -0
- package/src/module/entity_json/docs/FlatJson_Filterin_System.md +2804 -0
- package/src/module/entity_json/entity/entityJson.entity.ts +4 -1
- package/src/module/entity_json/entity_json.module.ts +9 -5
- package/src/module/entity_json/service/entity_json.service.ts +237 -51
- package/src/module/filter/controller/filter.controller.ts +1 -3
- package/src/module/filter/filter.module.ts +12 -3
- package/src/module/filter/service/filter.service.ts +130 -73
- package/src/module/filter/service/flatjson-filter.service.ts +903 -0
- package/src/module/filter/service/saved-filter.service.ts +16 -26
- package/src/module/filter/test/flatjson-filter.service.spec.ts +415 -0
- package/src/module/integration/service/integration.service.ts +6 -2
- package/src/module/integration/service/wrapper.service.ts +1 -0
- package/src/module/layout/controller/layout.controller.ts +8 -1
- package/src/module/layout/entity/header-section.entity.ts +6 -0
- package/src/module/layout/layout.module.ts +1 -1
- package/src/module/layout/repository/header-section.repository.ts +6 -0
- package/src/module/layout/service/header-section.service.ts +1 -1
- package/src/module/linked_attributes/controller/linked_attributes.controller.ts +100 -0
- package/src/module/linked_attributes/dto/create-linked-attribute-smart.dto.ts +54 -0
- package/src/module/linked_attributes/linked_attributes.module.ts +9 -2
- package/src/module/linked_attributes/service/linked_attributes.service.ts +578 -3
- package/src/module/linked_attributes/test/linked-attributes.service.spec.ts +244 -0
- package/src/module/listmaster/service/list-master.service.ts +9 -1
- package/src/module/meta/controller/attribute-master.controller.ts +12 -0
- package/src/module/meta/controller/meta.controller.ts +25 -3
- package/src/module/{app_master → meta}/entity/app-master.entity.ts +9 -22
- package/src/module/meta/entity/entity-master.entity.ts +9 -3
- package/src/module/meta/entity.module.ts +20 -6
- package/src/module/{app_master → meta}/repository/app-master.repository.ts +3 -3
- package/src/module/meta/service/attribute-master.service.ts +31 -1
- package/src/module/meta/service/entity-master.service.ts +1 -0
- package/src/module/meta/service/entity-relation.service.ts +10 -6
- package/src/module/meta/service/entity-service-impl.service.ts +14 -19
- package/src/module/meta/service/entity-table.service.ts +82 -68
- package/src/module/meta/service/entity.service.ts +0 -1
- package/src/module/{enterprise → meta}/service/populate-meta.service.ts +5 -2
- package/src/module/meta/service/resolver.service.ts +4 -0
- package/src/module/module/controller/module-access.controller.ts +9 -14
- package/src/module/module/entity/menu.entity.ts +10 -18
- package/src/module/module/entity/module-access.entity.ts +3 -40
- package/src/module/module/entity/module-action.entity.ts +6 -10
- package/src/module/module/entity/module.entity.ts +14 -7
- package/src/module/module/module.module.ts +3 -2
- package/src/module/module/repository/menu.repository.ts +29 -43
- package/src/module/module/repository/module-access.repository.ts +62 -110
- package/src/module/module/service/menu.service.ts +9 -7
- package/src/module/module/service/module-access.service.ts +34 -22
- package/src/module/notification/entity/notification.entity.ts +3 -53
- package/src/module/notification/notification.module.ts +5 -6
- package/src/module/notification/service/email.service.ts +1 -16
- package/src/module/notification/service/notification.service.ts +1 -0
- package/src/module/notification/service/otp.service.ts +5 -16
- package/src/module/user/controller/login.controller.ts +8 -7
- package/src/module/user/controller/user.controller.ts +9 -0
- package/src/module/user/dto/create-user.dto.ts +6 -19
- package/src/module/user/entity/role.entity.ts +16 -59
- package/src/module/user/entity/user-role-mapping.entity.ts +3 -29
- package/src/module/user/entity/user-session.entity.ts +19 -3
- package/src/module/user/entity/user.entity.ts +13 -48
- package/src/module/user/repository/role.repository.ts +12 -32
- package/src/module/user/repository/user-role-mapping.repository.ts +1 -5
- package/src/module/user/repository/user.repository.ts +9 -36
- package/src/module/user/repository/userSession.repository.ts +1 -5
- package/src/module/user/service/login.service.ts +51 -47
- package/src/module/user/service/role.service.ts +63 -64
- package/src/module/user/service/user-role-mapping.service.ts +1 -23
- package/src/module/user/service/user-session.service.ts +11 -14
- package/src/module/user/service/user.service.ts +95 -76
- package/src/module/user/user.module.ts +5 -4
- package/src/module/workflow/repository/action-data.repository.ts +8 -6
- package/src/module/workflow/repository/action.repository.ts +11 -11
- package/src/module/workflow/repository/form-master.repository.ts +2 -2
- package/src/module/workflow/service/action-data.service.ts +2 -3
- package/src/module/workflow/service/action.service.ts +2 -2
- package/src/module/workflow/service/comm-template.service.ts +2 -0
- package/src/module/workflow/service/entity-modification.service.ts +1 -0
- package/src/module/workflow/service/form-master.service.ts +2 -2
- package/src/module/workflow/service/populate-workflow.service.ts +1 -1
- package/src/module/workflow/service/task.service.ts +3 -0
- package/src/module/workflow/service/workflow-meta.service.ts +7 -2
- package/src/module/workflow/service/workflow.service.ts +2 -2
- package/src/module/workflow/workflow.module.ts +0 -2
- package/src/module/workflow-automation/service/workflow-automation.service.ts +7 -19
- package/src/module/workflow-automation/workflow-automation.module.ts +3 -4
- package/src/module/workflow-schedule/service/workflow-schedule.service.ts +2 -0
- package/src/resources/dev.properties.yaml +2 -2
- package/src/table.config.ts +3 -3
- package/.claude/settings.local.json +0 -26
- package/.idea/250218_nodejs_core.iml +0 -9
- package/.idea/codeStyles/Project.xml +0 -59
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/copilot.data.migration.agent.xml +0 -6
- package/.idea/copilot.data.migration.ask.xml +0 -6
- package/.idea/copilot.data.migration.ask2agent.xml +0 -6
- package/.idea/copilot.data.migration.edit.xml +0 -6
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/prettier.xml +0 -6
- package/.idea/vcs.xml +0 -6
- package/dist/constant/status.constant.d.ts +0 -4
- package/dist/constant/status.constant.js +0 -9
- package/dist/constant/status.constant.js.map +0 -1
- package/dist/module/app_master/app-master.module.d.ts +0 -2
- package/dist/module/app_master/app-master.module.js +0 -28
- package/dist/module/app_master/app-master.module.js.map +0 -1
- package/dist/module/app_master/controller/app-master.controller.js.map +0 -1
- package/dist/module/app_master/entity/app-master.entity.d.ts +0 -17
- package/dist/module/app_master/entity/app-master.entity.js.map +0 -1
- package/dist/module/app_master/repository/app-master.repository.js.map +0 -1
- package/dist/module/app_master/service/app-master.service.js.map +0 -1
- package/dist/module/enterprise/controller/enterprise.controller.d.ts +0 -12
- package/dist/module/enterprise/controller/enterprise.controller.js +0 -57
- package/dist/module/enterprise/controller/enterprise.controller.js.map +0 -1
- package/dist/module/enterprise/controller/meta.controller.d.ts +0 -9
- package/dist/module/enterprise/controller/meta.controller.js +0 -43
- package/dist/module/enterprise/controller/meta.controller.js.map +0 -1
- package/dist/module/enterprise/service/brand-profile.service.d.ts +0 -0
- package/dist/module/enterprise/service/brand-profile.service.js +0 -1
- package/dist/module/enterprise/service/brand-profile.service.js.map +0 -1
- package/dist/module/enterprise/service/populate-meta.service.d.ts +0 -9
- package/dist/module/enterprise/service/populate-meta.service.js.map +0 -1
- package/dist/module/enterprise/service/school.service.d.ts +0 -0
- package/dist/module/enterprise/service/school.service.js +0 -1
- package/dist/module/enterprise/service/school.service.js.map +0 -1
- package/dist/module/preference_master/entity/preference.entity.d.ts +0 -9
- package/dist/module/preference_master/entity/preference.entity.js +0 -48
- package/dist/module/preference_master/entity/preference.entity.js.map +0 -1
- package/dist/module/preference_master/preference.service.d.ts +0 -8
- package/dist/module/preference_master/preference.service.js +0 -31
- package/dist/module/preference_master/preference.service.js.map +0 -1
- package/dist/module/preference_master/repo/preference.repository.d.ts +0 -8
- package/dist/module/preference_master/repo/preference.repository.js +0 -48
- package/dist/module/preference_master/repo/preference.repository.js.map +0 -1
- package/server.log +0 -850
- package/src/constant/status.constant.ts +0 -4
- package/src/module/app_master/app-master.module.ts +0 -15
- package/src/module/enterprise/controller/enterprise.controller.ts +0 -40
- package/src/module/enterprise/controller/meta.controller.ts +0 -23
- package/src/module/enterprise/service/brand-profile.service.ts +0 -10
- package/src/module/enterprise/service/school.service.ts +0 -5
- package/src/module/preference_master/entity/preference.entity.ts +0 -25
- package/src/module/preference_master/preference.service.ts +0 -27
- package/src/module/preference_master/repo/preference.repository.ts +0 -36
- /package/dist/module/{app_master → meta}/controller/app-master.controller.d.ts +0 -0
- /package/dist/module/{app_master → meta}/controller/app-master.controller.js +0 -0
- /package/dist/module/{app_master → meta}/service/app-master.service.d.ts +0 -0
- /package/dist/module/{app_master → meta}/service/app-master.service.js +0 -0
- /package/src/module/{app_master → meta}/controller/app-master.controller.ts +0 -0
- /package/src/module/{app_master → meta}/service/app-master.service.ts +0 -0
|
@@ -17,7 +17,7 @@ export class MenuRepository extends Repository<MenuData> {
|
|
|
17
17
|
super(MenuData, dataSource.createEntityManager());
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
async getUserRoles(userId: number,
|
|
20
|
+
async getUserRoles(userId: number, appcode: string): Promise<number[]> {
|
|
21
21
|
const userRoleMappingRepo =
|
|
22
22
|
this.reflectionHelper.getRepoService('UserRoleMapping');
|
|
23
23
|
|
|
@@ -26,7 +26,7 @@ export class MenuRepository extends Repository<MenuData> {
|
|
|
26
26
|
.innerJoin('sso_role', 'role', 'role.id = urm.role_id')
|
|
27
27
|
.select('urm.role_id', 'role_id')
|
|
28
28
|
.where('urm.user_id = :userId', { userId })
|
|
29
|
-
.andWhere('role.
|
|
29
|
+
.andWhere('role.appcode = :appcode', { appcode })
|
|
30
30
|
.getRawMany();
|
|
31
31
|
|
|
32
32
|
return roles.map((r) => r.role_id);
|
|
@@ -34,65 +34,61 @@ export class MenuRepository extends Repository<MenuData> {
|
|
|
34
34
|
|
|
35
35
|
async getAccessibleModules(
|
|
36
36
|
roleIds: number[],
|
|
37
|
-
|
|
38
|
-
): Promise<
|
|
37
|
+
appCode: string,
|
|
38
|
+
): Promise<string[]> {
|
|
39
|
+
const roleRepo = this.reflectionHelper.getRepoService('Role');
|
|
40
|
+
|
|
41
|
+
const roleCodes = await roleRepo
|
|
42
|
+
.createQueryBuilder('role')
|
|
43
|
+
.select('role.code', 'code')
|
|
44
|
+
.where('role.id IN (:...roleIds)', { roleIds })
|
|
45
|
+
.getRawMany();
|
|
39
46
|
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
code: appcode
|
|
44
|
-
}
|
|
45
|
-
});
|
|
47
|
+
const codes = roleCodes.map((r) => r.code);
|
|
48
|
+
|
|
49
|
+
if (codes.length === 0) return [];
|
|
46
50
|
|
|
47
51
|
const modules = await this.moduleAccessRepo
|
|
48
52
|
.createQueryBuilder('moduleAccess')
|
|
49
|
-
.select('moduleAccess.
|
|
50
|
-
.where('moduleAccess.
|
|
53
|
+
.select('moduleAccess.module_code')
|
|
54
|
+
.where('moduleAccess.role_code IN (:...codes)', { codes })
|
|
51
55
|
.andWhere('moduleAccess.access_flag > 0')
|
|
52
|
-
.andWhere('moduleAccess.
|
|
56
|
+
.andWhere('LOWER(moduleAccess.appcode) = LOWER(:appCode)', { appCode })
|
|
53
57
|
.getMany();
|
|
54
58
|
|
|
55
|
-
return Array.from(new Set(modules.map((module) => module.
|
|
59
|
+
return Array.from(new Set(modules.map((module) => module.module_code)));
|
|
56
60
|
}
|
|
57
61
|
|
|
58
62
|
/**
|
|
59
63
|
* ✅ FIXED: Use this.createQueryBuilder() instead of this.menuData.createQueryBuilder()
|
|
60
64
|
*/
|
|
61
65
|
async getMenuItems(
|
|
62
|
-
|
|
66
|
+
moduleCodes: string[],
|
|
63
67
|
appcode: string,
|
|
64
68
|
levelType: string,
|
|
65
69
|
) {
|
|
66
|
-
const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
|
|
67
|
-
|
|
68
|
-
const appMaster = await appMasterRepo.findOne({
|
|
69
|
-
where: {
|
|
70
|
-
code: appcode
|
|
71
|
-
}
|
|
72
|
-
})
|
|
73
|
-
|
|
74
70
|
return await this.menuData
|
|
75
71
|
.createQueryBuilder('menu')
|
|
76
72
|
.leftJoin(
|
|
77
73
|
'sso_module',
|
|
78
74
|
'module',
|
|
79
75
|
`
|
|
80
|
-
menu.
|
|
81
|
-
AND menu.
|
|
76
|
+
menu.module_code = module.module_code
|
|
77
|
+
AND LOWER(menu.appcode) = LOWER(module.appcode)
|
|
82
78
|
AND menu.level_type = module.level_type
|
|
83
79
|
`,
|
|
84
80
|
)
|
|
85
|
-
.where('menu.
|
|
86
|
-
.andWhere('menu.
|
|
81
|
+
.where('menu.module_code IN (:...moduleCodes)', { moduleCodes })
|
|
82
|
+
.andWhere('LOWER(menu.appcode) = LOWER(:appcode)', { appcode })
|
|
87
83
|
.andWhere('menu.level_type = :levelType', { levelType })
|
|
88
84
|
.andWhere('menu.ui_visible = 1')
|
|
89
85
|
.select([
|
|
90
86
|
'menu.*',
|
|
91
|
-
'module.module_code AS module_code',
|
|
92
87
|
'module.component_name AS component',
|
|
93
88
|
'module.title AS title',
|
|
94
89
|
'module.entity_type AS entity_type',
|
|
95
|
-
'module.type AS type'
|
|
90
|
+
'module.type AS type',
|
|
91
|
+
'module.ui_config AS ui_config',
|
|
96
92
|
])
|
|
97
93
|
.getRawMany();
|
|
98
94
|
}
|
|
@@ -103,14 +99,6 @@ export class MenuRepository extends Repository<MenuData> {
|
|
|
103
99
|
levelType: string,
|
|
104
100
|
levelId: number,
|
|
105
101
|
): Promise<number[]> {
|
|
106
|
-
const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
|
|
107
|
-
|
|
108
|
-
const appMaster = await appMasterRepo.findOne({
|
|
109
|
-
where: {
|
|
110
|
-
code: appcode
|
|
111
|
-
}
|
|
112
|
-
})
|
|
113
|
-
|
|
114
102
|
const repo = this.reflectionHelper.getRepoService('UserRoleMapping');
|
|
115
103
|
|
|
116
104
|
if (userId) {
|
|
@@ -126,9 +114,7 @@ export class MenuRepository extends Repository<MenuData> {
|
|
|
126
114
|
const getUserUrm = await repo.findOne({
|
|
127
115
|
where: {
|
|
128
116
|
user_id: userId,
|
|
129
|
-
|
|
130
|
-
code: appcode
|
|
131
|
-
},
|
|
117
|
+
appcode: appcode,
|
|
132
118
|
},
|
|
133
119
|
});
|
|
134
120
|
|
|
@@ -149,7 +135,7 @@ export class MenuRepository extends Repository<MenuData> {
|
|
|
149
135
|
.where('urm.user_id = :userId', { userId: userId })
|
|
150
136
|
.andWhere('urm.level_type = :levelType', { levelType })
|
|
151
137
|
.andWhere('urm.level_id = :levelId', { levelId: levelId })
|
|
152
|
-
.andWhere('role.
|
|
138
|
+
.andWhere('role.appcode = :appcode', { appcode })
|
|
153
139
|
.getRawMany();
|
|
154
140
|
|
|
155
141
|
if (roles.length) return roles.map((r) => r.urm_role_id);
|
|
@@ -174,7 +160,7 @@ export class MenuRepository extends Repository<MenuData> {
|
|
|
174
160
|
.where('urm.user_id = :userId', { userId })
|
|
175
161
|
.andWhere('urm.level_type = :levelType', { levelType: 'BRN' })
|
|
176
162
|
.andWhere('urm.level_id = :levelId', { levelId: brandId })
|
|
177
|
-
.andWhere('role.
|
|
163
|
+
.andWhere('role.appcode = :appcode', { appcode })
|
|
178
164
|
.getRawMany();
|
|
179
165
|
|
|
180
166
|
if (roles.length) return roles.map((r) => r.urm_role_id);
|
|
@@ -188,7 +174,7 @@ export class MenuRepository extends Repository<MenuData> {
|
|
|
188
174
|
.where('urm.user_id = :userId', { userId })
|
|
189
175
|
.andWhere('urm.level_type = :levelType', { levelType: 'ORG' })
|
|
190
176
|
.andWhere('urm.level_id = :levelId', { levelId: orgId })
|
|
191
|
-
.andWhere('role.
|
|
177
|
+
.andWhere('role.appcode = :appcode', { appcode })
|
|
192
178
|
.getRawMany();
|
|
193
179
|
|
|
194
180
|
if (roles.length) return roles.map((r) => r.urm_role_id);
|
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
import { BadRequestException, Injectable } from '@nestjs/common';
|
|
2
2
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
3
|
-
import { In,
|
|
3
|
+
import { In, Not, Repository, IsNull, DataSource } from 'typeorm';
|
|
4
4
|
import { Role } from 'src/module/user/entity/role.entity';
|
|
5
5
|
import { ModuleAccess } from '../entity/module-access.entity';
|
|
6
6
|
import { ModuleAction } from '../entity/module-action.entity';
|
|
7
7
|
import { ModuleData } from '../entity/module.entity';
|
|
8
|
-
import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
|
|
9
8
|
|
|
10
9
|
@Injectable()
|
|
11
10
|
export class ModuleAccessRepository {
|
|
12
11
|
constructor(
|
|
13
12
|
@InjectRepository(Role)
|
|
14
13
|
private readonly roleRepo: Repository<Role>,
|
|
14
|
+
|
|
15
15
|
@InjectRepository(ModuleData)
|
|
16
16
|
private readonly moduleRepo: Repository<ModuleData>,
|
|
17
|
+
|
|
17
18
|
@InjectRepository(ModuleAccess)
|
|
18
19
|
private readonly moduleAccessRepo: Repository<ModuleAccess>,
|
|
20
|
+
|
|
19
21
|
@InjectRepository(ModuleAction)
|
|
20
22
|
private readonly moduleActionRepo: Repository<ModuleAction>,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
23
|
+
|
|
24
|
+
private readonly dataSource: DataSource,
|
|
25
|
+
) {}
|
|
24
26
|
|
|
25
27
|
async getRoles({
|
|
26
28
|
appcode,
|
|
@@ -31,25 +33,24 @@ export class ModuleAccessRepository {
|
|
|
31
33
|
level_type?: string;
|
|
32
34
|
level_id?: number;
|
|
33
35
|
}) {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
const query = this.dataSource
|
|
37
|
+
.createQueryBuilder()
|
|
38
|
+
.select('*')
|
|
39
|
+
.from('sso_role', 'role')
|
|
40
|
+
.where('role.appcode = :appcode', { appcode })
|
|
41
|
+
.andWhere('(role.is_factory IS NULL OR role.is_factory != 1)');
|
|
40
42
|
|
|
41
43
|
if (level_type) {
|
|
42
|
-
|
|
44
|
+
query.andWhere('role.level_type = :level_type', { level_type });
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
if (level_id !== undefined) {
|
|
46
|
-
|
|
48
|
+
query.andWhere('role.level_id = :level_id', {
|
|
49
|
+
level_id: String(level_id),
|
|
50
|
+
});
|
|
47
51
|
}
|
|
48
52
|
|
|
49
|
-
const roles = await
|
|
50
|
-
where,
|
|
51
|
-
select: ['id', 'name'], // keep returned data same as your mapping
|
|
52
|
-
});
|
|
53
|
+
const roles = await query.getRawMany(); // use getRawMany since you're selecting from a raw table
|
|
53
54
|
|
|
54
55
|
return roles.map((role) => ({
|
|
55
56
|
label: role.name,
|
|
@@ -67,21 +68,11 @@ export class ModuleAccessRepository {
|
|
|
67
68
|
let modules: any[];
|
|
68
69
|
if (loggedInUser.level_type == 'SCH') {
|
|
69
70
|
modules = await this.moduleRepo.find({
|
|
70
|
-
where: {
|
|
71
|
-
module_level: 'MAINMOD',
|
|
72
|
-
app: {
|
|
73
|
-
code: appcode,
|
|
74
|
-
},
|
|
75
|
-
level_type: 'SCH',
|
|
76
|
-
},
|
|
71
|
+
where: { module_level: 'MAINMOD', appcode, level_type: 'SCH' },
|
|
77
72
|
});
|
|
78
73
|
} else {
|
|
79
74
|
modules = await this.moduleRepo.find({
|
|
80
|
-
where: {
|
|
81
|
-
module_level: 'MAINMOD', app: {
|
|
82
|
-
code: appcode,
|
|
83
|
-
},
|
|
84
|
-
},
|
|
75
|
+
where: { module_level: 'MAINMOD', appcode },
|
|
85
76
|
});
|
|
86
77
|
}
|
|
87
78
|
|
|
@@ -114,77 +105,53 @@ export class ModuleAccessRepository {
|
|
|
114
105
|
roles = await this.roleRepo.find({
|
|
115
106
|
where: {
|
|
116
107
|
id: In(fetchedRoleIds),
|
|
117
|
-
|
|
118
|
-
code: appcode,
|
|
119
|
-
},
|
|
108
|
+
appcode,
|
|
120
109
|
},
|
|
121
110
|
});
|
|
122
111
|
} else {
|
|
123
112
|
roles = await this.roleRepo.find({
|
|
124
113
|
where: {
|
|
125
114
|
id: In(roleIds.map((id) => Number(id))),
|
|
126
|
-
|
|
127
|
-
code: appcode,
|
|
128
|
-
},
|
|
115
|
+
appcode,
|
|
129
116
|
},
|
|
130
117
|
});
|
|
131
118
|
}
|
|
132
119
|
|
|
133
120
|
if (!roles.length) return [];
|
|
134
121
|
|
|
122
|
+
const roleCodes = roles.map((role) => role.code);
|
|
123
|
+
|
|
135
124
|
const moduleAccesses = await this.moduleAccessRepo.find({
|
|
136
125
|
where: {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
code: appcode,
|
|
140
|
-
},
|
|
141
|
-
level_type: levelType,
|
|
142
|
-
},
|
|
143
|
-
relations: {
|
|
144
|
-
app: true,
|
|
145
|
-
module: true,
|
|
126
|
+
role_code: In(roleCodes),
|
|
127
|
+
appcode,
|
|
146
128
|
},
|
|
147
129
|
});
|
|
148
130
|
|
|
149
131
|
return roles.map((role) => ({
|
|
150
|
-
|
|
132
|
+
role_code: role.code,
|
|
151
133
|
name: role.name,
|
|
152
134
|
permission: moduleAccesses
|
|
153
|
-
.filter((access) => access.
|
|
135
|
+
.filter((access) => access.role_code === role.code)
|
|
154
136
|
.map((access) => ({
|
|
155
137
|
action: access.action_type,
|
|
156
138
|
access: access.access_flag,
|
|
157
|
-
|
|
139
|
+
code: access.module_code,
|
|
158
140
|
level_type: access.level_type,
|
|
159
|
-
|
|
160
|
-
code: access?.module?.module_code,
|
|
161
|
-
appcode: access.app.code,
|
|
141
|
+
appcode: access.appcode,
|
|
162
142
|
})),
|
|
163
143
|
}));
|
|
164
144
|
}
|
|
165
145
|
|
|
166
146
|
async getAllModulesByLevel(mainModIds: string[], appcode: string, levelType) {
|
|
167
|
-
|
|
168
|
-
const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
|
|
169
|
-
// TODO Permissions not getting populated
|
|
170
|
-
const appMaster = await appMasterRepo.find({
|
|
171
|
-
where: {
|
|
172
|
-
code: appcode,
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
if (!appMaster) {
|
|
177
|
-
return {};
|
|
178
|
-
}
|
|
179
|
-
|
|
180
147
|
const mainModules =
|
|
181
148
|
mainModIds.length === 1 && mainModIds[0] === '-1'
|
|
182
149
|
? await this.moduleRepo.find({
|
|
183
|
-
|
|
184
|
-
|
|
150
|
+
where: { module_level: 'MAINMOD', appcode },
|
|
151
|
+
})
|
|
185
152
|
: await this.moduleRepo.find({
|
|
186
|
-
|
|
187
|
-
|
|
153
|
+
where: { id: In(mainModIds), module_level: 'MAINMOD', appcode },
|
|
154
|
+
});
|
|
188
155
|
|
|
189
156
|
if (!mainModules.length) return {};
|
|
190
157
|
|
|
@@ -198,7 +165,7 @@ export class ModuleAccessRepository {
|
|
|
198
165
|
.join(' OR '),
|
|
199
166
|
Object.fromEntries(wbsCodes.map((code) => [`code${code}`, `${code}%`])),
|
|
200
167
|
)
|
|
201
|
-
.andWhere('module.
|
|
168
|
+
.andWhere('module.appcode = :appcode', { appcode })
|
|
202
169
|
.andWhere('module.module_code != :excludedCode', {
|
|
203
170
|
excludedCode: 'all_organization_adm_org',
|
|
204
171
|
})
|
|
@@ -208,27 +175,28 @@ export class ModuleAccessRepository {
|
|
|
208
175
|
(mod) => mod.module_code != 'all_organization_adm_org',
|
|
209
176
|
);
|
|
210
177
|
|
|
211
|
-
const
|
|
178
|
+
const moduleCodes = allModules.map((m) => m.module_code);
|
|
212
179
|
|
|
213
180
|
const allActions = await this.moduleActionRepo.find({
|
|
214
|
-
where: {
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
})
|
|
181
|
+
where: { module_code: In(moduleCodes) },
|
|
182
|
+
});
|
|
218
183
|
|
|
219
184
|
// Map actions by module_code with VIEW action first
|
|
220
185
|
const actionMap = allActions.reduce(
|
|
221
186
|
(acc, action) => {
|
|
222
|
-
if (!acc[action
|
|
187
|
+
if (!acc[action.module_code]) acc[action.module_code] = [];
|
|
188
|
+
|
|
223
189
|
const actionItem = {
|
|
224
|
-
action: action.
|
|
190
|
+
action: action.action_type,
|
|
225
191
|
name: action.action_name,
|
|
226
192
|
};
|
|
227
|
-
|
|
228
|
-
|
|
193
|
+
|
|
194
|
+
if (action.action_type === 'VIEW') {
|
|
195
|
+
acc[action.module_code].unshift(actionItem); // ➕ Add VIEW at start
|
|
229
196
|
} else {
|
|
230
|
-
acc[action
|
|
197
|
+
acc[action.module_code].push(actionItem); // ➕ Add others at end
|
|
231
198
|
}
|
|
199
|
+
|
|
232
200
|
return acc;
|
|
233
201
|
},
|
|
234
202
|
{} as Record<string, { action: string; name: string }[]>,
|
|
@@ -247,13 +215,12 @@ export class ModuleAccessRepository {
|
|
|
247
215
|
(mod) =>
|
|
248
216
|
mod.wbs_code.startsWith(`${parentWbs}.`) &&
|
|
249
217
|
mod.wbs_code.split('.').length ===
|
|
250
|
-
|
|
218
|
+
parentWbs.split('.').length + 1,
|
|
251
219
|
)
|
|
252
220
|
.map((mod) => ({
|
|
253
221
|
name: mod.name,
|
|
254
|
-
module_id: mod.id,
|
|
255
222
|
code: mod.module_code,
|
|
256
|
-
permission: actionMap[mod.
|
|
223
|
+
permission: actionMap[mod.module_code] || [],
|
|
257
224
|
submod: buildHierarchy(mod.wbs_code),
|
|
258
225
|
}));
|
|
259
226
|
|
|
@@ -261,9 +228,8 @@ export class ModuleAccessRepository {
|
|
|
261
228
|
.filter((mod) => mod.level_type === lvl)
|
|
262
229
|
.map((mod) => ({
|
|
263
230
|
name: mod.name,
|
|
264
|
-
module_id: mod.id,
|
|
265
231
|
code: mod.module_code,
|
|
266
|
-
permission: actionMap[mod.
|
|
232
|
+
permission: actionMap[mod.module_code] || [],
|
|
267
233
|
submod: buildHierarchy(mod.wbs_code),
|
|
268
234
|
}));
|
|
269
235
|
|
|
@@ -288,16 +254,10 @@ export class ModuleAccessRepository {
|
|
|
288
254
|
for (const access of accessList) {
|
|
289
255
|
const existing = await this.moduleAccessRepo.findOne({
|
|
290
256
|
where: {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
},
|
|
294
|
-
module: {
|
|
295
|
-
module_code: access.module_code,
|
|
296
|
-
},
|
|
257
|
+
role_code: access.role_code,
|
|
258
|
+
module_code: access.module_code,
|
|
297
259
|
action_type: access.action_type,
|
|
298
|
-
|
|
299
|
-
code: access.appcode,
|
|
300
|
-
},
|
|
260
|
+
appcode: access.appcode,
|
|
301
261
|
level_type: access.level_type,
|
|
302
262
|
},
|
|
303
263
|
});
|
|
@@ -307,7 +267,7 @@ export class ModuleAccessRepository {
|
|
|
307
267
|
await this.moduleAccessRepo.save(existing);
|
|
308
268
|
} else {
|
|
309
269
|
await this.moduleAccessRepo.save(
|
|
310
|
-
this.moduleAccessRepo.create(access),
|
|
270
|
+
await this.moduleAccessRepo.create(access),
|
|
311
271
|
);
|
|
312
272
|
}
|
|
313
273
|
}
|
|
@@ -325,10 +285,13 @@ export class ModuleAccessRepository {
|
|
|
325
285
|
|
|
326
286
|
if (!module) throw new BadRequestException('Module not found');
|
|
327
287
|
|
|
288
|
+
const roles = await this.roleRepo.find({ where: { id: In(roleIds) } });
|
|
289
|
+
const roleCodes = roles.map((role) => role.code);
|
|
290
|
+
|
|
328
291
|
const actions = await this.moduleAccessRepo.find({
|
|
329
292
|
where: {
|
|
330
|
-
|
|
331
|
-
|
|
293
|
+
module_code: moduleCode,
|
|
294
|
+
role_code: In(roleCodes),
|
|
332
295
|
access_flag: 1,
|
|
333
296
|
},
|
|
334
297
|
});
|
|
@@ -338,18 +301,16 @@ export class ModuleAccessRepository {
|
|
|
338
301
|
return {
|
|
339
302
|
entity_type: module.entity_type,
|
|
340
303
|
title: module.title,
|
|
304
|
+
ui_config: module.ui_config || {},
|
|
341
305
|
action: uniqueActions,
|
|
342
306
|
};
|
|
343
307
|
}
|
|
344
|
-
|
|
345
308
|
async getModuleAccessByRoles(roleIds: number[], appcode: string) {
|
|
346
309
|
// Step 1: Get role codes from sso_role
|
|
347
310
|
const roles = await this.roleRepo.find({
|
|
348
311
|
where: {
|
|
349
312
|
id: In(roleIds),
|
|
350
|
-
|
|
351
|
-
code: appcode,
|
|
352
|
-
},
|
|
313
|
+
appcode,
|
|
353
314
|
},
|
|
354
315
|
select: ['id', 'code'],
|
|
355
316
|
});
|
|
@@ -357,27 +318,18 @@ export class ModuleAccessRepository {
|
|
|
357
318
|
const roleCodes = roles.map((r) => r.code);
|
|
358
319
|
if (!roleCodes.length) return [];
|
|
359
320
|
|
|
360
|
-
const appMasterRepo = this.reflectionHelper.getRepoService('AppMaster');
|
|
361
|
-
const appMaster = await appMasterRepo.findOne({
|
|
362
|
-
where: {
|
|
363
|
-
code: appcode,
|
|
364
|
-
},
|
|
365
|
-
});
|
|
366
|
-
|
|
367
321
|
// Step 2: Fetch full access data
|
|
368
322
|
const accessRecords = await this.moduleAccessRepo
|
|
369
323
|
.createQueryBuilder('access')
|
|
370
324
|
.select([
|
|
371
|
-
'access.
|
|
372
|
-
'm.module_code AS module_code',
|
|
325
|
+
'access.module_code AS module_code',
|
|
373
326
|
'access.action_type AS action_type',
|
|
374
327
|
'access.access_flag AS access_flag',
|
|
375
328
|
'access.level_type AS level_type',
|
|
376
329
|
'access.appcode AS appcode',
|
|
377
330
|
])
|
|
378
|
-
.innerJoin('sso_module', 'm', 'm.id = access.module_id')
|
|
379
331
|
.where('access.role_code IN (:...roleCodes)', { roleCodes })
|
|
380
|
-
.andWhere('access.
|
|
332
|
+
.andWhere('access.appcode = :appcode', { appcode })
|
|
381
333
|
.getRawMany();
|
|
382
334
|
|
|
383
335
|
// Step 3: Format output
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { Injectable } from '@nestjs/common';
|
|
2
2
|
import { MenuRepository } from '../repository/menu.repository';
|
|
3
3
|
import { MenuData } from '../entity/menu.entity';
|
|
4
|
+
import { DataSource } from 'typeorm';
|
|
5
|
+
import { UserRoleMapping } from 'src/module/user/entity/user-role-mapping.entity';
|
|
4
6
|
|
|
5
7
|
@Injectable()
|
|
6
8
|
export class MenuService {
|
|
7
9
|
constructor(
|
|
8
10
|
private readonly menuRepository: MenuRepository,
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
+
private readonly datasource: DataSource,
|
|
12
|
+
) {}
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* Fetch and construct menu hierarchy for a given user.
|
|
@@ -28,15 +30,15 @@ export class MenuService {
|
|
|
28
30
|
if (!roleCodes.length) return { menu: [] };
|
|
29
31
|
|
|
30
32
|
// Step 2: Get accessible modules
|
|
31
|
-
const
|
|
33
|
+
const moduleCodes = await this.menuRepository.getAccessibleModules(
|
|
32
34
|
roleCodes,
|
|
33
35
|
appcode,
|
|
34
36
|
);
|
|
35
|
-
if (!
|
|
37
|
+
if (!moduleCodes.length) return { menu: [] };
|
|
36
38
|
|
|
37
39
|
// Step 3: Get menu items for the given level type
|
|
38
40
|
const menuItems = await this.menuRepository.getMenuItems(
|
|
39
|
-
|
|
41
|
+
moduleCodes,
|
|
40
42
|
appcode,
|
|
41
43
|
levelType,
|
|
42
44
|
);
|
|
@@ -74,7 +76,7 @@ export class MenuService {
|
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
// get user roles
|
|
77
|
-
async getUserRoles(userId: number,
|
|
78
|
-
return this.menuRepository.getUserRoles(userId,
|
|
79
|
+
async getUserRoles(userId: number, appcode: string): Promise<any> {
|
|
80
|
+
return this.menuRepository.getUserRoles(userId, appcode);
|
|
79
81
|
}
|
|
80
82
|
}
|
|
@@ -1,21 +1,27 @@
|
|
|
1
|
-
import { BadRequestException, Injectable } from '@nestjs/common';
|
|
1
|
+
import { BadRequestException, Inject, Injectable } from '@nestjs/common';
|
|
2
2
|
import { ModuleAccessRepository } from '../repository/module-access.repository';
|
|
3
|
-
import {
|
|
3
|
+
import { RoleRepository } from 'src/module/user/repository/role.repository';
|
|
4
|
+
import { RoleService } from '../../user/service/role.service';
|
|
5
|
+
import {
|
|
6
|
+
ENTITYTYPE_ROLE,
|
|
7
|
+
STATUS_INACTIVE,
|
|
8
|
+
} from '../../../constant/global.constant';
|
|
9
|
+
import { Role } from '../../user/entity/role.entity';
|
|
10
|
+
import { DataSource, EntityManager } from 'typeorm';
|
|
4
11
|
import { UserData } from 'src/module/user/entity/user.entity';
|
|
5
12
|
import { MenuRepository } from '../repository/menu.repository';
|
|
13
|
+
import { ListMasterService } from 'src/module/listmaster/service/list-master.service';
|
|
6
14
|
import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
|
|
7
|
-
import { Role } from '../../user/entity/role.entity';
|
|
8
|
-
import { InjectRepository } from '@nestjs/typeorm';
|
|
9
|
-
import { StatusConstant } from '../../../constant/status.constant';
|
|
10
15
|
|
|
11
16
|
@Injectable()
|
|
12
17
|
export class ModuleAccessService {
|
|
13
18
|
constructor(
|
|
14
19
|
private readonly moduleAccessRepository: ModuleAccessRepository,
|
|
15
20
|
private readonly menuRepository: MenuRepository,
|
|
21
|
+
private readonly dataSource: DataSource,
|
|
22
|
+
@Inject('ListMasterService')
|
|
23
|
+
private readonly listMasterService: ListMasterService,
|
|
16
24
|
private readonly reflectionHelper: ReflectionHelper,
|
|
17
|
-
@InjectRepository(Role)
|
|
18
|
-
private readonly roleRepo: Repository<Role>
|
|
19
25
|
) {
|
|
20
26
|
}
|
|
21
27
|
|
|
@@ -36,26 +42,25 @@ export class ModuleAccessService {
|
|
|
36
42
|
level_id?: number;
|
|
37
43
|
include?: boolean;
|
|
38
44
|
}) {
|
|
45
|
+
const query = this.dataSource
|
|
46
|
+
.createQueryBuilder()
|
|
47
|
+
.select('*')
|
|
48
|
+
.from('sso_role', 'role')
|
|
49
|
+
.where('role.appcode = :appcode', { appcode });
|
|
39
50
|
|
|
40
|
-
|
|
41
|
-
app: {
|
|
42
|
-
code: appcode
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
|
|
51
|
+
// Only add this condition if `include` is false (exclude factory roles)
|
|
46
52
|
if (!include) {
|
|
47
|
-
|
|
53
|
+
query.andWhere('(role.is_factory IS NULL OR role.is_factory != 1)');
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
if (level_type && level_id) {
|
|
51
|
-
|
|
52
|
-
|
|
57
|
+
query.andWhere('role.level_type = :level_type', { level_type });
|
|
58
|
+
query.andWhere('role.level_id = :level_id', {
|
|
59
|
+
level_id: String(level_id),
|
|
60
|
+
});
|
|
53
61
|
}
|
|
54
62
|
|
|
55
|
-
const roles = await
|
|
56
|
-
where,
|
|
57
|
-
});
|
|
58
|
-
|
|
63
|
+
const roles = await query.getRawMany();
|
|
59
64
|
|
|
60
65
|
return roles.map((role) => ({
|
|
61
66
|
label: role.name,
|
|
@@ -83,7 +88,7 @@ export class ModuleAccessService {
|
|
|
83
88
|
levelType: string,
|
|
84
89
|
): Promise<Record<string, any[]>> {
|
|
85
90
|
if (!appcode) {
|
|
86
|
-
throw new BadRequestException('
|
|
91
|
+
throw new BadRequestException('Appcode is required');
|
|
87
92
|
}
|
|
88
93
|
|
|
89
94
|
return this.moduleAccessRepository.getAllModulesByLevel(
|
|
@@ -128,11 +133,13 @@ export class ModuleAccessService {
|
|
|
128
133
|
appcode,
|
|
129
134
|
level_type,
|
|
130
135
|
level_id,
|
|
136
|
+
enterprise_id,
|
|
131
137
|
}: {
|
|
132
138
|
userId: number;
|
|
133
139
|
appcode: string;
|
|
134
140
|
level_type: string;
|
|
135
141
|
level_id: number;
|
|
142
|
+
enterprise_id: number;
|
|
136
143
|
}) {
|
|
137
144
|
// Step 1: Resolve roles
|
|
138
145
|
const roleCodes = await this.menuRepository.resolveUserRoles(
|
|
@@ -165,7 +172,12 @@ export class ModuleAccessService {
|
|
|
165
172
|
},
|
|
166
173
|
});
|
|
167
174
|
|
|
168
|
-
|
|
175
|
+
const resolveStatus = await this.listMasterService.getResolvedListCode(
|
|
176
|
+
STATUS_INACTIVE,
|
|
177
|
+
enterprise_id || 0,
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
if (!school || school.status === resolveStatus.id) {
|
|
169
181
|
// Return only VIEW permissions
|
|
170
182
|
return allPermissions.filter((perm) => perm.action === 'VIEW');
|
|
171
183
|
}
|