rez_core 0.0.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/.env +6 -0
- package/.husky/pre-commit +0 -0
- package/.prettierrc +4 -0
- package/README.md +99 -0
- package/dist/app.controller.d.ts +6 -0
- package/dist/app.controller.js +34 -0
- package/dist/app.controller.js.map +1 -0
- package/dist/app.module.d.ts +2 -0
- package/dist/app.module.js +32 -0
- package/dist/app.module.js.map +1 -0
- package/dist/app.service.d.ts +3 -0
- package/dist/app.service.js +20 -0
- package/dist/app.service.js.map +1 -0
- package/dist/config/config.module.d.ts +2 -0
- package/dist/config/config.module.js +29 -0
- package/dist/config/config.module.js.map +1 -0
- package/dist/config/database.config.d.ts +4 -0
- package/dist/config/database.config.js +30 -0
- package/dist/config/database.config.js.map +1 -0
- package/dist/constant/global.constant.d.ts +9 -0
- package/dist/constant/global.constant.js +13 -0
- package/dist/constant/global.constant.js.map +1 -0
- package/dist/constant/status.constant.d.ts +4 -0
- package/dist/constant/status.constant.js +9 -0
- package/dist/constant/status.constant.js.map +1 -0
- package/dist/core.module.d.ts +4 -0
- package/dist/core.module.js +51 -0
- package/dist/core.module.js.map +1 -0
- package/dist/decorators/roles.decorator.d.ts +1 -0
- package/dist/decorators/roles.decorator.js +7 -0
- package/dist/decorators/roles.decorator.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +36 -0
- package/dist/main.js.map +1 -0
- package/dist/module/auth/auth.module.d.ts +2 -0
- package/dist/module/auth/auth.module.js +49 -0
- package/dist/module/auth/auth.module.js.map +1 -0
- package/dist/module/auth/guards/google-auth.guard.d.ts +6 -0
- package/dist/module/auth/guards/google-auth.guard.js +21 -0
- package/dist/module/auth/guards/google-auth.guard.js.map +1 -0
- package/dist/module/auth/guards/jwt.guard.d.ts +10 -0
- package/dist/module/auth/guards/jwt.guard.js +36 -0
- package/dist/module/auth/guards/jwt.guard.js.map +1 -0
- package/dist/module/auth/guards/role.guard.d.ts +9 -0
- package/dist/module/auth/guards/role.guard.js +59 -0
- package/dist/module/auth/guards/role.guard.js.map +1 -0
- package/dist/module/auth/services/auth.service.d.ts +12 -0
- package/dist/module/auth/services/auth.service.js +43 -0
- package/dist/module/auth/services/auth.service.js.map +1 -0
- package/dist/module/auth/services/jwt.service.d.ts +6 -0
- package/dist/module/auth/services/jwt.service.js +28 -0
- package/dist/module/auth/services/jwt.service.js.map +1 -0
- package/dist/module/auth/strategies/google.strategy.d.ts +7 -0
- package/dist/module/auth/strategies/google.strategy.js +36 -0
- package/dist/module/auth/strategies/google.strategy.js.map +1 -0
- package/dist/module/auth/strategies/jwt.strategy.d.ts +14 -0
- package/dist/module/auth/strategies/jwt.strategy.js +54 -0
- package/dist/module/auth/strategies/jwt.strategy.js.map +1 -0
- package/dist/module/auth/strategies/local.strategy.d.ts +7 -0
- package/dist/module/auth/strategies/local.strategy.js +30 -0
- package/dist/module/auth/strategies/local.strategy.js.map +1 -0
- package/dist/module/dev/dev.module.d.ts +2 -0
- package/dist/module/dev/dev.module.js +25 -0
- package/dist/module/dev/dev.module.js.map +1 -0
- package/dist/module/dev/service/dev.service.d.ts +5 -0
- package/dist/module/dev/service/dev.service.js +25 -0
- package/dist/module/dev/service/dev.service.js.map +1 -0
- package/dist/module/enterprise/enterprise.module.d.ts +2 -0
- package/dist/module/enterprise/enterprise.module.js +19 -0
- package/dist/module/enterprise/enterprise.module.js.map +1 -0
- package/dist/module/enterprise/entity/enterprise.entity.d.ts +13 -0
- package/dist/module/enterprise/entity/enterprise.entity.js +64 -0
- package/dist/module/enterprise/entity/enterprise.entity.js.map +1 -0
- package/dist/module/enterprise/entity/organization.entity.d.ts +26 -0
- package/dist/module/enterprise/entity/organization.entity.js +120 -0
- package/dist/module/enterprise/entity/organization.entity.js.map +1 -0
- package/dist/module/master/controller/master.controller.d.ts +6 -0
- package/dist/module/master/controller/master.controller.js +43 -0
- package/dist/module/master/controller/master.controller.js.map +1 -0
- package/dist/module/master/service/master.service.d.ts +9 -0
- package/dist/module/master/service/master.service.js +50 -0
- package/dist/module/master/service/master.service.js.map +1 -0
- package/dist/module/meta/controller/entity.controller.d.ts +14 -0
- package/dist/module/meta/controller/entity.controller.js +98 -0
- package/dist/module/meta/controller/entity.controller.js.map +1 -0
- package/dist/module/meta/dto/entity-list-data.dto.d.ts +5 -0
- package/dist/module/meta/dto/entity-list-data.dto.js +7 -0
- package/dist/module/meta/dto/entity-list-data.dto.js.map +1 -0
- package/dist/module/meta/dto/entity-tab.dto.d.ts +4 -0
- package/dist/module/meta/dto/entity-tab.dto.js +7 -0
- package/dist/module/meta/dto/entity-tab.dto.js.map +1 -0
- package/dist/module/meta/entity/attribute-master.entity.d.ts +17 -0
- package/dist/module/meta/entity/attribute-master.entity.js +97 -0
- package/dist/module/meta/entity/attribute-master.entity.js.map +1 -0
- package/dist/module/meta/entity/base-entity.entity.d.ts +17 -0
- package/dist/module/meta/entity/base-entity.entity.js +91 -0
- package/dist/module/meta/entity/base-entity.entity.js.map +1 -0
- package/dist/module/meta/entity/entity-master.entity.d.ts +12 -0
- package/dist/module/meta/entity/entity-master.entity.js +86 -0
- package/dist/module/meta/entity/entity-master.entity.js.map +1 -0
- package/dist/module/meta/entity/entity-table-column.entity.d.ts +0 -0
- package/dist/module/meta/entity/entity-table-column.entity.js +1 -0
- package/dist/module/meta/entity/entity-table-column.entity.js.map +1 -0
- package/dist/module/meta/entity/entity-table.entity.d.ts +0 -0
- package/dist/module/meta/entity/entity-table.entity.js +1 -0
- package/dist/module/meta/entity/entity-table.entity.js.map +1 -0
- package/dist/module/meta/entity/preference.entity.d.ts +12 -0
- package/dist/module/meta/entity/preference.entity.js +89 -0
- package/dist/module/meta/entity/preference.entity.js.map +1 -0
- package/dist/module/meta/entity.module.d.ts +2 -0
- package/dist/module/meta/entity.module.js +45 -0
- package/dist/module/meta/entity.module.js.map +1 -0
- package/dist/module/meta/repository/attribute-master.repository.d.ts +7 -0
- package/dist/module/meta/repository/attribute-master.repository.js +41 -0
- package/dist/module/meta/repository/attribute-master.repository.js.map +1 -0
- package/dist/module/meta/repository/entity-table-column.repository.d.ts +7 -0
- package/dist/module/meta/repository/entity-table-column.repository.js +39 -0
- package/dist/module/meta/repository/entity-table-column.repository.js.map +1 -0
- package/dist/module/meta/repository/entity-table.repository.d.ts +7 -0
- package/dist/module/meta/repository/entity-table.repository.js +36 -0
- package/dist/module/meta/repository/entity-table.repository.js.map +1 -0
- package/dist/module/meta/repository/preference.repository.d.ts +7 -0
- package/dist/module/meta/repository/preference.repository.js +36 -0
- package/dist/module/meta/repository/preference.repository.js.map +1 -0
- package/dist/module/meta/service/entity-list.service.d.ts +15 -0
- package/dist/module/meta/service/entity-list.service.js +111 -0
- package/dist/module/meta/service/entity-list.service.js.map +1 -0
- package/dist/module/meta/service/entity-master.service.d.ts +7 -0
- package/dist/module/meta/service/entity-master.service.js +40 -0
- package/dist/module/meta/service/entity-master.service.js.map +1 -0
- package/dist/module/meta/service/entity-service-impl.service.d.ts +17 -0
- package/dist/module/meta/service/entity-service-impl.service.js +87 -0
- package/dist/module/meta/service/entity-service-impl.service.js.map +1 -0
- package/dist/module/meta/service/entity-table-column.service.d.ts +6 -0
- package/dist/module/meta/service/entity-table-column.service.js +33 -0
- package/dist/module/meta/service/entity-table-column.service.js.map +1 -0
- package/dist/module/meta/service/entity-table.service.d.ts +6 -0
- package/dist/module/meta/service/entity-table.service.js +28 -0
- package/dist/module/meta/service/entity-table.service.js.map +1 -0
- package/dist/module/meta/service/entity.service.d.ts +10 -0
- package/dist/module/meta/service/entity.service.js +3 -0
- package/dist/module/meta/service/entity.service.js.map +1 -0
- package/dist/module/meta/service/preference.service.d.ts +10 -0
- package/dist/module/meta/service/preference.service.js +37 -0
- package/dist/module/meta/service/preference.service.js.map +1 -0
- package/dist/module/module/controller/menu.controller.d.ts +8 -0
- package/dist/module/module/controller/menu.controller.js +41 -0
- package/dist/module/module/controller/menu.controller.js.map +1 -0
- package/dist/module/module/controller/module-access.controller.d.ts +13 -0
- package/dist/module/module/controller/module-access.controller.js +49 -0
- package/dist/module/module/controller/module-access.controller.js.map +1 -0
- package/dist/module/module/entity/menu.entity.d.ts +14 -0
- package/dist/module/module/entity/menu.entity.js +65 -0
- package/dist/module/module/entity/menu.entity.js.map +1 -0
- package/dist/module/module/entity/module-access.entity.d.ts +8 -0
- package/dist/module/module/entity/module-access.entity.js +44 -0
- package/dist/module/module/entity/module-access.entity.js.map +1 -0
- package/dist/module/module/entity/module-action.entity.d.ts +7 -0
- package/dist/module/module/entity/module-action.entity.js +40 -0
- package/dist/module/module/entity/module-action.entity.js.map +1 -0
- package/dist/module/module/entity/module.entity.d.ts +11 -0
- package/dist/module/module/entity/module.entity.js +53 -0
- package/dist/module/module/entity/module.entity.js.map +1 -0
- package/dist/module/module/module.module.d.ts +2 -0
- package/dist/module/module/module.module.js +53 -0
- package/dist/module/module/module.module.js.map +1 -0
- package/dist/module/module/repository/menu.repository.d.ts +9 -0
- package/dist/module/module/repository/menu.repository.js +64 -0
- package/dist/module/module/repository/menu.repository.js.map +1 -0
- package/dist/module/module/repository/module-access.repository.d.ts +15 -0
- package/dist/module/module/repository/module-access.repository.js +82 -0
- package/dist/module/module/repository/module-access.repository.js.map +1 -0
- package/dist/module/module/service/menu.service.d.ts +9 -0
- package/dist/module/module/service/menu.service.js +55 -0
- package/dist/module/module/service/menu.service.js.map +1 -0
- package/dist/module/module/service/module-access.service.d.ts +13 -0
- package/dist/module/module/service/module-access.service.js +40 -0
- package/dist/module/module/service/module-access.service.js.map +1 -0
- package/dist/module/user/controller/login.controller.d.ts +14 -0
- package/dist/module/user/controller/login.controller.js +80 -0
- package/dist/module/user/controller/login.controller.js.map +1 -0
- package/dist/module/user/controller/user.controller.d.ts +8 -0
- package/dist/module/user/controller/user.controller.js +42 -0
- package/dist/module/user/controller/user.controller.js.map +1 -0
- package/dist/module/user/dto/create-user.dto.d.ts +10 -0
- package/dist/module/user/dto/create-user.dto.js +64 -0
- package/dist/module/user/dto/create-user.dto.js.map +1 -0
- package/dist/module/user/entity/role.entity.d.ts +7 -0
- package/dist/module/user/entity/role.entity.js +39 -0
- package/dist/module/user/entity/role.entity.js.map +1 -0
- package/dist/module/user/entity/user-role-mapping.entity.d.ts +7 -0
- package/dist/module/user/entity/user-role-mapping.entity.js +41 -0
- package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -0
- package/dist/module/user/entity/user-session.entity.d.ts +11 -0
- package/dist/module/user/entity/user-session.entity.js +86 -0
- package/dist/module/user/entity/user-session.entity.js.map +1 -0
- package/dist/module/user/entity/user.entity.d.ts +12 -0
- package/dist/module/user/entity/user.entity.js +59 -0
- package/dist/module/user/entity/user.entity.js.map +1 -0
- package/dist/module/user/repository/role.repository.d.ts +7 -0
- package/dist/module/user/repository/role.repository.js +34 -0
- package/dist/module/user/repository/role.repository.js.map +1 -0
- package/dist/module/user/repository/user-role-mapping.repository.d.ts +12 -0
- package/dist/module/user/repository/user-role-mapping.repository.js +55 -0
- package/dist/module/user/repository/user-role-mapping.repository.js.map +1 -0
- package/dist/module/user/repository/user.repository.d.ts +10 -0
- package/dist/module/user/repository/user.repository.js +49 -0
- package/dist/module/user/repository/user.repository.js.map +1 -0
- package/dist/module/user/repository/userSession.repository.d.ts +10 -0
- package/dist/module/user/repository/userSession.repository.js +45 -0
- package/dist/module/user/repository/userSession.repository.js.map +1 -0
- package/dist/module/user/service/login.service.d.ts +18 -0
- package/dist/module/user/service/login.service.js +69 -0
- package/dist/module/user/service/login.service.js.map +1 -0
- package/dist/module/user/service/role.service.d.ts +10 -0
- package/dist/module/user/service/role.service.js +34 -0
- package/dist/module/user/service/role.service.js.map +1 -0
- package/dist/module/user/service/user-role-mapping.service.d.ts +9 -0
- package/dist/module/user/service/user-role-mapping.service.js +37 -0
- package/dist/module/user/service/user-role-mapping.service.js.map +1 -0
- package/dist/module/user/service/user-session.service.d.ts +13 -0
- package/dist/module/user/service/user-session.service.js +51 -0
- package/dist/module/user/service/user-session.service.js.map +1 -0
- package/dist/module/user/service/user.service.d.ts +17 -0
- package/dist/module/user/service/user.service.js +112 -0
- package/dist/module/user/service/user.service.js.map +1 -0
- package/dist/module/user/user.module.d.ts +2 -0
- package/dist/module/user/user.module.js +64 -0
- package/dist/module/user/user.module.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/utils/service/base64util.service.d.ts +4 -0
- package/dist/utils/service/base64util.service.js +21 -0
- package/dist/utils/service/base64util.service.js.map +1 -0
- package/dist/utils/service/clockIDGenUtil.service.d.ts +8 -0
- package/dist/utils/service/clockIDGenUtil.service.js +31 -0
- package/dist/utils/service/clockIDGenUtil.service.js.map +1 -0
- package/dist/utils/service/dateUtil.service.d.ts +3 -0
- package/dist/utils/service/dateUtil.service.js +28 -0
- package/dist/utils/service/dateUtil.service.js.map +1 -0
- package/dist/utils/service/encryptUtil.service.d.ts +9 -0
- package/dist/utils/service/encryptUtil.service.js +112 -0
- package/dist/utils/service/encryptUtil.service.js.map +1 -0
- package/dist/utils/service/excel-helper.service.d.ts +7 -0
- package/dist/utils/service/excel-helper.service.js +44 -0
- package/dist/utils/service/excel-helper.service.js.map +1 -0
- package/dist/utils/service/excelUtil.service.d.ts +3 -0
- package/dist/utils/service/excelUtil.service.js +17 -0
- package/dist/utils/service/excelUtil.service.js.map +1 -0
- package/dist/utils/service/json-util.service.d.ts +3 -0
- package/dist/utils/service/json-util.service.js +24 -0
- package/dist/utils/service/json-util.service.js.map +1 -0
- package/dist/utils/service/loggingUtil.service.d.ts +4 -0
- package/dist/utils/service/loggingUtil.service.js +49 -0
- package/dist/utils/service/loggingUtil.service.js.map +1 -0
- package/dist/utils/service/reflection-helper.service.d.ts +9 -0
- package/dist/utils/service/reflection-helper.service.js +60 -0
- package/dist/utils/service/reflection-helper.service.js.map +1 -0
- package/dist/utils/utils.module.d.ts +2 -0
- package/dist/utils/utils.module.js +26 -0
- package/dist/utils/utils.module.js.map +1 -0
- package/eslint.config.mjs +35 -0
- package/nest-cli.json +8 -0
- package/package.json +97 -0
- package/src/app.controller.ts +12 -0
- package/src/app.service.ts +8 -0
- package/src/config/config.module.ts +18 -0
- package/src/config/database.config.ts +20 -0
- package/src/constant/global.constant.ts +10 -0
- package/src/constant/status.constant.ts +3 -0
- package/src/core.module.ts +40 -0
- package/src/decorators/roles.decorator.ts +4 -0
- package/src/index.ts +1 -0
- package/src/module/auth/auth.module.ts +36 -0
- package/src/module/auth/guards/google-auth.guard.ts +9 -0
- package/src/module/auth/guards/jwt.guard.ts +22 -0
- package/src/module/auth/guards/role.guard.ts +68 -0
- package/src/module/auth/services/auth.service.ts +29 -0
- package/src/module/auth/services/jwt.service.ts +11 -0
- package/src/module/auth/strategies/google.strategy.ts +29 -0
- package/src/module/auth/strategies/jwt.strategy.ts +43 -0
- package/src/module/auth/strategies/local.strategy.ts +13 -0
- package/src/module/dev/dev.module.ts +12 -0
- package/src/module/dev/service/dev.service.ts +7 -0
- package/src/module/enterprise/enterprise.module.ts +8 -0
- package/src/module/enterprise/entity/enterprise.entity.ts +37 -0
- package/src/module/enterprise/entity/organization.entity.ts +80 -0
- package/src/module/master/controller/master.controller.ts +22 -0
- package/src/module/master/service/master.service.ts +37 -0
- package/src/module/meta/controller/entity.controller.ts +108 -0
- package/src/module/meta/entity/attribute-master.entity.ts +67 -0
- package/src/module/meta/entity/base-entity.entity.ts +53 -0
- package/src/module/meta/entity/entity-master.entity.ts +62 -0
- package/src/module/meta/entity/entity-table-column.entity.ts +0 -0
- package/src/module/meta/entity/entity-table.entity.ts +0 -0
- package/src/module/meta/entity/preference.entity.ts +65 -0
- package/src/module/meta/entity.module.ts +32 -0
- package/src/module/meta/repository/attribute-master.repository.ts +28 -0
- package/src/module/meta/repository/preference.repository.ts +20 -0
- package/src/module/meta/service/entity-master.service.ts +26 -0
- package/src/module/meta/service/entity-service-impl.service.ts +131 -0
- package/src/module/meta/service/entity.service.ts +23 -0
- package/src/module/meta/service/preference.service.ts +24 -0
- package/src/module/module/controller/menu.controller.ts +15 -0
- package/src/module/module/controller/module-access.controller.ts +20 -0
- package/src/module/module/entity/menu.entity.ts +38 -0
- package/src/module/module/entity/module-access.entity.ts +22 -0
- package/src/module/module/entity/module-action.entity.ts +19 -0
- package/src/module/module/entity/module.entity.ts +29 -0
- package/src/module/module/module.module.ts +42 -0
- package/src/module/module/repository/menu.repository.ts +69 -0
- package/src/module/module/repository/module-access.repository.ts +66 -0
- package/src/module/module/service/menu.service.ts +61 -0
- package/src/module/module/service/module-access.service.ts +25 -0
- package/src/module/user/controller/login.controller.ts +55 -0
- package/src/module/user/controller/user.controller.ts +28 -0
- package/src/module/user/dto/create-user.dto.ts +52 -0
- package/src/module/user/entity/role.entity.ts +20 -0
- package/src/module/user/entity/user-role-mapping.entity.ts +21 -0
- package/src/module/user/entity/user-session.entity.ts +61 -0
- package/src/module/user/entity/user.entity.ts +35 -0
- package/src/module/user/repository/role.repository.ts +16 -0
- package/src/module/user/repository/user-role-mapping.repository.ts +44 -0
- package/src/module/user/repository/user.repository.ts +33 -0
- package/src/module/user/repository/userSession.repository.ts +33 -0
- package/src/module/user/service/login.service.ts +66 -0
- package/src/module/user/service/role.service.ts +29 -0
- package/src/module/user/service/user-role-mapping.service.ts +29 -0
- package/src/module/user/service/user-session.service.ts +41 -0
- package/src/module/user/service/user.service.ts +141 -0
- package/src/module/user/user.module.ts +51 -0
- package/src/utils/service/base64util.service.ts +19 -0
- package/src/utils/service/clockIDGenUtil.service.ts +21 -0
- package/src/utils/service/dateUtil.service.ts +17 -0
- package/src/utils/service/encryptUtil.service.ts +97 -0
- package/src/utils/service/excel-helper.service.ts +56 -0
- package/src/utils/service/excelUtil.service.ts +15 -0
- package/src/utils/service/json-util.service.ts +23 -0
- package/src/utils/service/loggingUtil.service.ts +56 -0
- package/src/utils/service/reflection-helper.service.ts +53 -0
- package/src/utils/utils.module.ts +14 -0
- package/tsconfig.build.json +4 -0
- package/tsconfig.json +23 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Controller, Get, Request, UseGuards } from '@nestjs/common';
|
|
2
|
+
import { MenuService } from '../service/menu.service';
|
|
3
|
+
import { JwtAuthGuard } from 'src/module/auth/guards/jwt.guard';
|
|
4
|
+
|
|
5
|
+
@Controller('menu')
|
|
6
|
+
export class MenuController {
|
|
7
|
+
constructor(private readonly menuService: MenuService) {}
|
|
8
|
+
|
|
9
|
+
@UseGuards(JwtAuthGuard)
|
|
10
|
+
@Get()
|
|
11
|
+
async getMenu(@Request() req) {
|
|
12
|
+
const userId = req.user.userId;
|
|
13
|
+
return this.menuService.getUserMenu(userId);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Controller, Put, Body, Post, Get, Query } from '@nestjs/common';
|
|
2
|
+
import { ModuleAccessService } from '../service/module-access.service';
|
|
3
|
+
|
|
4
|
+
@Controller('module-access')
|
|
5
|
+
export class ModuleAccessController {
|
|
6
|
+
constructor(private readonly moduleAccessService: ModuleAccessService) {}
|
|
7
|
+
|
|
8
|
+
@Post('update')
|
|
9
|
+
async updateModuleAccess(@Body() moduleAccessData: any[]) {
|
|
10
|
+
return this.moduleAccessService.updateModuleAccess(moduleAccessData);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@Get('list')
|
|
14
|
+
async getModuleAccess(
|
|
15
|
+
@Query('role_code') roleCode?: string,
|
|
16
|
+
@Query('mainmod') mainMod?: string
|
|
17
|
+
) {
|
|
18
|
+
return this.moduleAccessService.getModuleAccess(roleCode, mainMod);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
+
import { StatusType } from '../../../constant/status.constant';
|
|
3
|
+
|
|
4
|
+
@Entity({ name: 'cr_menu' })
|
|
5
|
+
export class MenuData {
|
|
6
|
+
@PrimaryGeneratedColumn({ type: 'int' })
|
|
7
|
+
id: number;
|
|
8
|
+
|
|
9
|
+
@Column({ type: 'varchar', length: 100, nullable: true })
|
|
10
|
+
name: string;
|
|
11
|
+
|
|
12
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
13
|
+
module_code: string;
|
|
14
|
+
|
|
15
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
16
|
+
status: StatusType;
|
|
17
|
+
|
|
18
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
19
|
+
wbs_code: string;
|
|
20
|
+
|
|
21
|
+
@Column({type: 'varchar', nullable: true })
|
|
22
|
+
path: string;
|
|
23
|
+
|
|
24
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
25
|
+
icon: string;
|
|
26
|
+
|
|
27
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
28
|
+
module_level: string;
|
|
29
|
+
|
|
30
|
+
@Column({type: 'int', nullable: true})
|
|
31
|
+
parent_id: number;
|
|
32
|
+
|
|
33
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
34
|
+
parent_code: string;
|
|
35
|
+
|
|
36
|
+
@Column({type: 'int', nullable: true})
|
|
37
|
+
ui_visible: number;
|
|
38
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
@Entity({ name: 'cr_module_access' })
|
|
4
|
+
export class ModuleAccess {
|
|
5
|
+
@PrimaryGeneratedColumn()
|
|
6
|
+
id: number;
|
|
7
|
+
|
|
8
|
+
@Column({type: 'varchar', length: 100, nullable: true})
|
|
9
|
+
module_code: string;
|
|
10
|
+
|
|
11
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
12
|
+
role_code: string;
|
|
13
|
+
|
|
14
|
+
@Column({type: 'int', nullable: true })
|
|
15
|
+
access_flag: number;
|
|
16
|
+
|
|
17
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
18
|
+
action_type: string;
|
|
19
|
+
|
|
20
|
+
@Column({type: 'varchar', length: 100, nullable: true})
|
|
21
|
+
app_code: string;
|
|
22
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
@Entity({ name: 'module_action' })
|
|
4
|
+
export class ModuleAction {
|
|
5
|
+
@PrimaryGeneratedColumn()
|
|
6
|
+
id: number;
|
|
7
|
+
|
|
8
|
+
@Column({type: 'int', nullable: true})
|
|
9
|
+
module_id: number;
|
|
10
|
+
|
|
11
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
12
|
+
module_code: string;
|
|
13
|
+
|
|
14
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
15
|
+
action_name:string
|
|
16
|
+
|
|
17
|
+
@Column({type: 'varchar', length: 50, nullable: true })
|
|
18
|
+
action_type: string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
+
import { StatusType } from '../../../constant/status.constant';
|
|
3
|
+
|
|
4
|
+
@Entity({ name: 'cr_module' })
|
|
5
|
+
export class ModuleData {
|
|
6
|
+
@PrimaryGeneratedColumn({ type: 'int' })
|
|
7
|
+
id: number;
|
|
8
|
+
|
|
9
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
10
|
+
name: string;
|
|
11
|
+
|
|
12
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
13
|
+
module_code: string;
|
|
14
|
+
|
|
15
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
16
|
+
status: StatusType;
|
|
17
|
+
|
|
18
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
19
|
+
module_level: string;
|
|
20
|
+
|
|
21
|
+
@Column({type: 'int', nullable: true })
|
|
22
|
+
parent_id: number;
|
|
23
|
+
|
|
24
|
+
@Column({type: 'varchar', length: 100, nullable: true })
|
|
25
|
+
parent_code: string;
|
|
26
|
+
|
|
27
|
+
@Column({type: 'int', nullable: true})
|
|
28
|
+
ui_visible: number;
|
|
29
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Module } from '@nestjs/common';
|
|
2
|
+
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
3
|
+
import { ModuleData } from './entity/module.entity';
|
|
4
|
+
import { UtilsModule } from '../../utils/utils.module';
|
|
5
|
+
import { ModuleAccess } from './entity/module-access.entity';
|
|
6
|
+
import { ModuleAction } from './entity/module-action.entity';
|
|
7
|
+
import { ModuleAccessService } from './service/module-access.service';
|
|
8
|
+
import { MenuController } from './controller/menu.controller';
|
|
9
|
+
import { MenuService } from './service/menu.service';
|
|
10
|
+
import { MenuRepository } from './repository/menu.repository';
|
|
11
|
+
import { MenuData } from './entity/menu.entity';
|
|
12
|
+
import { ModuleAccessRepository } from './repository/module-access.repository';
|
|
13
|
+
import { ModuleAccessController } from './controller/module-access.controller';
|
|
14
|
+
import { UserRoleMapping } from '../user/entity/user-role-mapping.entity';
|
|
15
|
+
import { UserModule } from '../user/user.module';
|
|
16
|
+
import { RoleRepository } from '../user/repository/role.repository';
|
|
17
|
+
import { Role } from '../user/entity/role.entity';
|
|
18
|
+
|
|
19
|
+
@Module({
|
|
20
|
+
imports: [
|
|
21
|
+
TypeOrmModule.forFeature([
|
|
22
|
+
ModuleData,
|
|
23
|
+
ModuleAccess,
|
|
24
|
+
ModuleAction,
|
|
25
|
+
MenuData,
|
|
26
|
+
UserRoleMapping,
|
|
27
|
+
Role
|
|
28
|
+
]),
|
|
29
|
+
UtilsModule,
|
|
30
|
+
UserModule
|
|
31
|
+
],
|
|
32
|
+
controllers: [MenuController, ModuleAccessController],
|
|
33
|
+
providers: [
|
|
34
|
+
ModuleAccessService,
|
|
35
|
+
MenuService,
|
|
36
|
+
MenuRepository,
|
|
37
|
+
ModuleAccessRepository,
|
|
38
|
+
|
|
39
|
+
],
|
|
40
|
+
exports: [ModuleAccessService],
|
|
41
|
+
})
|
|
42
|
+
export class ModuleModule {}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { DataSource, Repository } from 'typeorm';
|
|
3
|
+
import { MenuData } from '../entity/menu.entity';
|
|
4
|
+
import { ModuleAccess } from '../entity/module-access.entity';
|
|
5
|
+
import { UserRoleMapping } from 'src/module/user/entity/user-role-mapping.entity';
|
|
6
|
+
import { Role } from 'src/module/user/entity/role.entity';
|
|
7
|
+
|
|
8
|
+
@Injectable()
|
|
9
|
+
export class MenuRepository extends Repository<MenuData> {
|
|
10
|
+
constructor(private readonly dataSource: DataSource) {
|
|
11
|
+
super(MenuData, dataSource.createEntityManager());
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Get all role IDs assigned to a user.
|
|
16
|
+
*/
|
|
17
|
+
async getUserRoles(userId: number): Promise<number[]> {
|
|
18
|
+
const roles = await this.dataSource
|
|
19
|
+
.getRepository(UserRoleMapping)
|
|
20
|
+
.createQueryBuilder('userRoleMapping')
|
|
21
|
+
.select('userRoleMapping.role_id')
|
|
22
|
+
.where('userRoleMapping.user_id = :userId', { userId })
|
|
23
|
+
.getMany();
|
|
24
|
+
|
|
25
|
+
return roles.map(role => role.role_id);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Get module codes that the user has access to based on their role IDs.
|
|
30
|
+
*/
|
|
31
|
+
async getAccessibleModules(roleIds: number[]): Promise<string[]> {
|
|
32
|
+
// Get role codes from role IDs
|
|
33
|
+
const roleCodes = await this.dataSource
|
|
34
|
+
.getRepository(Role)
|
|
35
|
+
.createQueryBuilder('role')
|
|
36
|
+
.select('role.code')
|
|
37
|
+
.where('role.id IN (:...roleIds)', { roleIds })
|
|
38
|
+
.getMany();
|
|
39
|
+
|
|
40
|
+
const codes = roleCodes.map(role => role.code);
|
|
41
|
+
|
|
42
|
+
if (codes.length === 0) {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Get accessible modules using role codes
|
|
47
|
+
const modules = await this.dataSource
|
|
48
|
+
.getRepository(ModuleAccess)
|
|
49
|
+
.createQueryBuilder('moduleAccess')
|
|
50
|
+
.select('moduleAccess.module_code')
|
|
51
|
+
.where('moduleAccess.role_code IN (:...codes)', { codes })
|
|
52
|
+
.andWhere('moduleAccess.access_flag > 0')
|
|
53
|
+
.getMany();
|
|
54
|
+
|
|
55
|
+
return modules.map(module => module.module_code);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Get menu items based on accessible modules.
|
|
62
|
+
*/
|
|
63
|
+
async getMenuItems(moduleCodes: string[]): Promise<MenuData[]> {
|
|
64
|
+
return this.createQueryBuilder('menu')
|
|
65
|
+
.where('menu.module_code IN (:...moduleCodes)', { moduleCodes })
|
|
66
|
+
.getMany();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { InjectRepository } from '@nestjs/typeorm';
|
|
3
|
+
import { Repository, In } from 'typeorm';
|
|
4
|
+
import { ModuleAccess } from '../entity/module-access.entity';
|
|
5
|
+
import { ModuleData } from '../entity/module.entity';
|
|
6
|
+
import { Role } from 'src/module/user/entity/role.entity';
|
|
7
|
+
|
|
8
|
+
@Injectable()
|
|
9
|
+
export class ModuleAccessRepository {
|
|
10
|
+
constructor(
|
|
11
|
+
@InjectRepository(ModuleAccess)
|
|
12
|
+
private readonly moduleAccessRepo: Repository<ModuleAccess>,
|
|
13
|
+
@InjectRepository(Role)
|
|
14
|
+
private readonly roleRepo: Repository<Role>,
|
|
15
|
+
@InjectRepository(ModuleData)
|
|
16
|
+
private readonly moduleRepo: Repository<ModuleData>
|
|
17
|
+
) {}
|
|
18
|
+
|
|
19
|
+
async updateModuleAccess(moduleAccessData: any[]): Promise<boolean> {
|
|
20
|
+
try {
|
|
21
|
+
for (const access of moduleAccessData) {
|
|
22
|
+
const { role_code, module_code, action_type, access_flag, app_code } = access;
|
|
23
|
+
|
|
24
|
+
const existingEntry = await this.moduleAccessRepo.findOne({
|
|
25
|
+
where: { role_code, module_code, action_type, app_code },
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
if (existingEntry) {
|
|
29
|
+
existingEntry.access_flag = access_flag;
|
|
30
|
+
await this.moduleAccessRepo.save(existingEntry);
|
|
31
|
+
} else {
|
|
32
|
+
await this.moduleAccessRepo.save({
|
|
33
|
+
role_code,
|
|
34
|
+
module_code,
|
|
35
|
+
action_type,
|
|
36
|
+
access_flag,
|
|
37
|
+
app_code,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.error('Error updating module access:', error);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async getModuleAccess(roleCode?: string, moduleCode?: string) {
|
|
49
|
+
const roles = await this.roleRepo.find({ take: 5 }); // Fetch top 5 roles
|
|
50
|
+
const modules = await this.moduleRepo.find(); // Fetch all modules
|
|
51
|
+
|
|
52
|
+
let filteredRoles = roles;
|
|
53
|
+
if (roleCode) {
|
|
54
|
+
const roleCodes = roleCode.split(',');
|
|
55
|
+
filteredRoles = filteredRoles.filter((role) => roleCodes.includes(role.code)); // Use correct property
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
let filteredModules = modules;
|
|
59
|
+
if (moduleCode) {
|
|
60
|
+
const moduleCodes = moduleCode.split(',');
|
|
61
|
+
filteredModules = filteredModules.filter((module) => moduleCodes.includes(module.module_code)); // Use correct property
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return { roles: filteredRoles, modules: filteredModules };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { MenuRepository } from '../repository/menu.repository';
|
|
3
|
+
import { MenuData } from '../entity/menu.entity';
|
|
4
|
+
|
|
5
|
+
@Injectable()
|
|
6
|
+
export class MenuService {
|
|
7
|
+
constructor(private readonly menuRepository: MenuRepository) {}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Fetch and construct menu hierarchy for a given user.
|
|
11
|
+
*/
|
|
12
|
+
async getUserMenu(userId: number) {
|
|
13
|
+
// Step 1: Get the roles of the user
|
|
14
|
+
const roleCodes = await this.menuRepository.getUserRoles(userId);
|
|
15
|
+
if (!roleCodes.length) {
|
|
16
|
+
return { menu: [] }; // Return empty menu if user has no roles
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Step 2: Get the modules the user has access to
|
|
20
|
+
const moduleCodes = await this.menuRepository.getAccessibleModules(roleCodes);
|
|
21
|
+
if (!moduleCodes.length) {
|
|
22
|
+
return { menu: [] }; // Return empty menu if no accessible modules
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Step 3: Get the menu items based on accessible modules
|
|
26
|
+
const menuItems = await this.menuRepository.getMenuItems(moduleCodes);
|
|
27
|
+
|
|
28
|
+
// Step 4: Build hierarchical menu structure
|
|
29
|
+
const menuTree = this.buildMenuHierarchy(menuItems);
|
|
30
|
+
|
|
31
|
+
return { menu: menuTree };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Converts a flat list of menu items into a hierarchical tree.
|
|
36
|
+
*/
|
|
37
|
+
private buildMenuHierarchy(menuItems: MenuData[]): any[] {
|
|
38
|
+
const menuMap = new Map<string, any>(); // Use module_code as the key
|
|
39
|
+
const rootMenu: any[] = [];
|
|
40
|
+
|
|
41
|
+
// Initialize menu items in the map
|
|
42
|
+
menuItems.forEach(menu => {
|
|
43
|
+
menuMap.set(menu.wbs_code, { ...menu, submenu: [] });
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Build the hierarchy based on WBS code
|
|
47
|
+
menuItems.forEach(menu => {
|
|
48
|
+
const parentWbs = menu.wbs_code.split('.').slice(0, -1).join('.'); // Get parent WBS code
|
|
49
|
+
|
|
50
|
+
if (parentWbs && menuMap.has(parentWbs)) {
|
|
51
|
+
menuMap.get(parentWbs).submenu.push(menuMap.get(menu.wbs_code));
|
|
52
|
+
} else {
|
|
53
|
+
rootMenu.push(menuMap.get(menu.wbs_code));
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
return rootMenu;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Injectable } from '@nestjs/common';
|
|
2
|
+
import { ModuleAccessRepository } from '../repository/module-access.repository';
|
|
3
|
+
|
|
4
|
+
@Injectable()
|
|
5
|
+
export class ModuleAccessService {
|
|
6
|
+
constructor(private readonly moduleAccessRepository: ModuleAccessRepository) {}
|
|
7
|
+
|
|
8
|
+
async updateModuleAccess(moduleAccessData: any[]): Promise<{ success: boolean; msg: string }> {
|
|
9
|
+
if (!moduleAccessData || moduleAccessData.length === 0) {
|
|
10
|
+
return { success: false, msg: 'No data provided' };
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const result = await this.moduleAccessRepository.updateModuleAccess(moduleAccessData);
|
|
14
|
+
|
|
15
|
+
if (result) {
|
|
16
|
+
return { success: true, msg: 'Module access updated successfully' };
|
|
17
|
+
} else {
|
|
18
|
+
return { success: false, msg: 'Failed to update module access' };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async getModuleAccess(roleCode?: string, mainMod?: string) {
|
|
23
|
+
return this.moduleAccessRepository.getModuleAccess(roleCode, mainMod);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Body,
|
|
3
|
+
Controller,
|
|
4
|
+
Get,
|
|
5
|
+
HttpStatus,
|
|
6
|
+
Post,
|
|
7
|
+
Req,
|
|
8
|
+
Res,
|
|
9
|
+
UseGuards,
|
|
10
|
+
} from '@nestjs/common';
|
|
11
|
+
import { LoginService } from '../service/login.service';
|
|
12
|
+
import { GoogleAuthGuard } from '../../../module/auth/guards/google-auth.guard';
|
|
13
|
+
import { JwtAuthGuard } from '../../auth/guards/jwt.guard';
|
|
14
|
+
import { Request, Response } from 'express';
|
|
15
|
+
|
|
16
|
+
@Controller('auth')
|
|
17
|
+
export class LoginController {
|
|
18
|
+
constructor(private loginService: LoginService) {}
|
|
19
|
+
|
|
20
|
+
@Post('login')
|
|
21
|
+
async login(@Body() body, @Res() res: Response) {
|
|
22
|
+
console.log("hey")
|
|
23
|
+
return res
|
|
24
|
+
.status(HttpStatus.OK)
|
|
25
|
+
.json(await this.loginService.login(body.email_id, body.password));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@UseGuards(JwtAuthGuard)
|
|
29
|
+
@Post('logout')
|
|
30
|
+
async logout(
|
|
31
|
+
@Req() request: Request & { user: any },
|
|
32
|
+
@Res() response: Response,
|
|
33
|
+
) {
|
|
34
|
+
let requestUser: any = request.user;
|
|
35
|
+
response
|
|
36
|
+
.status(HttpStatus.OK)
|
|
37
|
+
.json(await this.loginService.logout(requestUser.sessionToken));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@Get('google')
|
|
41
|
+
@UseGuards(GoogleAuthGuard)
|
|
42
|
+
async googleLogin() {
|
|
43
|
+
// Passport automatically redirects to Google
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// 2️⃣ Handles Google callback, validates user, creates session, and returns JWT
|
|
47
|
+
@Get('google/callback')
|
|
48
|
+
@UseGuards(GoogleAuthGuard)
|
|
49
|
+
async googleAuthRedirect(@Req() req) {
|
|
50
|
+
let { email, name } = req.user; // Extracted from Google Strategy
|
|
51
|
+
|
|
52
|
+
// Call LoginService to validate user, create session, and return JWT
|
|
53
|
+
return this.loginService.loginWithGoogle(email, name);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Body,
|
|
3
|
+
Controller,
|
|
4
|
+
HttpStatus,
|
|
5
|
+
Inject,
|
|
6
|
+
Post,
|
|
7
|
+
Res,
|
|
8
|
+
ValidationPipe,
|
|
9
|
+
} from '@nestjs/common';
|
|
10
|
+
import { UserService } from '../service/user.service';
|
|
11
|
+
import { CreateUserDto } from '../dto/create-user.dto';
|
|
12
|
+
import { Response } from 'express';
|
|
13
|
+
|
|
14
|
+
@Controller('user')
|
|
15
|
+
export class UserController {
|
|
16
|
+
constructor(
|
|
17
|
+
@Inject('UserService') private readonly userService: UserService,
|
|
18
|
+
) {}
|
|
19
|
+
|
|
20
|
+
@Post('signup')
|
|
21
|
+
async signup(
|
|
22
|
+
@Body(new ValidationPipe()) createUserDto: CreateUserDto,
|
|
23
|
+
@Res() res: Response,
|
|
24
|
+
) {
|
|
25
|
+
const result = await this.userService.createEntity(createUserDto, null);
|
|
26
|
+
res.status(HttpStatus.OK).json(result);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {IsNotEmpty, IsString, Matches} from 'class-validator';
|
|
2
|
+
import {BaseEntity} from '../../meta/entity/base-entity.entity';
|
|
3
|
+
import {ENTITYTYPE_USER} from '../../../constant/global.constant';
|
|
4
|
+
import {Expose} from "class-transformer";
|
|
5
|
+
|
|
6
|
+
export class CreateUserDto extends BaseEntity {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
this.entity_type = ENTITYTYPE_USER;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@IsString()
|
|
13
|
+
@IsNotEmpty()
|
|
14
|
+
@Matches(/^[A-Za-z][A-Za-z]*$/, {message: 'enter valid first name'})
|
|
15
|
+
@Expose()
|
|
16
|
+
first_name: string;
|
|
17
|
+
|
|
18
|
+
@IsString()
|
|
19
|
+
@IsNotEmpty()
|
|
20
|
+
@Matches(/^[A-Za-z][A-Za-z]*$/, {message: 'enter valid last name'})
|
|
21
|
+
@Expose()
|
|
22
|
+
last_name: string;
|
|
23
|
+
|
|
24
|
+
@IsString()
|
|
25
|
+
@IsNotEmpty()
|
|
26
|
+
@Matches(
|
|
27
|
+
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/,
|
|
28
|
+
{message: 'enter valid email'},
|
|
29
|
+
)
|
|
30
|
+
email_id: string;
|
|
31
|
+
|
|
32
|
+
@IsString()
|
|
33
|
+
@IsNotEmpty()
|
|
34
|
+
@Matches(
|
|
35
|
+
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,
|
|
36
|
+
{
|
|
37
|
+
message:
|
|
38
|
+
'Password must be at least 8 characters long, contain at least one uppercase letter, one lowercase letter, one digit, and one special character',
|
|
39
|
+
},
|
|
40
|
+
)
|
|
41
|
+
@Expose()
|
|
42
|
+
password: string;
|
|
43
|
+
|
|
44
|
+
@IsString()
|
|
45
|
+
@IsNotEmpty()
|
|
46
|
+
@Matches(/^[0-9]{10}$/, {message: 'enter valid contact number'})
|
|
47
|
+
@Expose()
|
|
48
|
+
mobile: string;
|
|
49
|
+
|
|
50
|
+
@Expose()
|
|
51
|
+
roles: any[];
|
|
52
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseEntity } from '../../meta/entity/base-entity.entity';
|
|
2
|
+
import { ENTITYTYPE_ROLE } from '../../../constant/global.constant';
|
|
3
|
+
import { Column, Entity } from 'typeorm';
|
|
4
|
+
|
|
5
|
+
@Entity({ name: 'cr_role' })
|
|
6
|
+
export class Role extends BaseEntity {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
this.entity_type = ENTITYTYPE_ROLE;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@Column({ length: 50, type: 'varchar', nullable: true })
|
|
13
|
+
app_code: string;
|
|
14
|
+
|
|
15
|
+
@Column({ type: 'int', nullable: true })
|
|
16
|
+
is_system: number;
|
|
17
|
+
|
|
18
|
+
@Column({ type: 'varchar', length: 250 })
|
|
19
|
+
description: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
@Entity({ name: 'cr_user_role_mapping' })
|
|
4
|
+
export class UserRoleMapping {
|
|
5
|
+
constructor(user_id: number, role_id: number) {
|
|
6
|
+
this.user_id = user_id;
|
|
7
|
+
this.role_id = role_id;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@PrimaryGeneratedColumn()
|
|
11
|
+
id: number;
|
|
12
|
+
|
|
13
|
+
@Column({ type: 'bigint', nullable: true })
|
|
14
|
+
user_id: number;
|
|
15
|
+
|
|
16
|
+
@Column({ type: 'bigint', nullable: true })
|
|
17
|
+
role_id: number;
|
|
18
|
+
|
|
19
|
+
@Column({ type: 'int', nullable: true })
|
|
20
|
+
is_default: number;
|
|
21
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
@Entity({ name: 'cr_user_session' })
|
|
4
|
+
export class UserSession {
|
|
5
|
+
@PrimaryGeneratedColumn()
|
|
6
|
+
id: number;
|
|
7
|
+
|
|
8
|
+
@Column({
|
|
9
|
+
name: 'is_session_loggedout',
|
|
10
|
+
nullable: true,
|
|
11
|
+
type: 'int',
|
|
12
|
+
})
|
|
13
|
+
is_session_loggedout: number;
|
|
14
|
+
|
|
15
|
+
@Column({
|
|
16
|
+
name: 'login_id',
|
|
17
|
+
nullable: true,
|
|
18
|
+
length: 50,
|
|
19
|
+
})
|
|
20
|
+
login_id: string;
|
|
21
|
+
|
|
22
|
+
@Column({
|
|
23
|
+
name: 'login_time',
|
|
24
|
+
nullable: true,
|
|
25
|
+
})
|
|
26
|
+
login_time: Date;
|
|
27
|
+
|
|
28
|
+
@Column({
|
|
29
|
+
name: 'logout_time',
|
|
30
|
+
nullable: true,
|
|
31
|
+
})
|
|
32
|
+
logout_time: Date;
|
|
33
|
+
|
|
34
|
+
@Column({
|
|
35
|
+
name: 'session_key',
|
|
36
|
+
nullable: true,
|
|
37
|
+
length: 100,
|
|
38
|
+
})
|
|
39
|
+
session_key: string;
|
|
40
|
+
|
|
41
|
+
@Column({
|
|
42
|
+
name: 'user_id',
|
|
43
|
+
nullable: true,
|
|
44
|
+
type: 'bigint',
|
|
45
|
+
})
|
|
46
|
+
user_id: number;
|
|
47
|
+
|
|
48
|
+
@Column({
|
|
49
|
+
name: 'access_token',
|
|
50
|
+
nullable: true,
|
|
51
|
+
type: 'varchar',
|
|
52
|
+
length: 5000,
|
|
53
|
+
})
|
|
54
|
+
access_token: string;
|
|
55
|
+
|
|
56
|
+
@Column({
|
|
57
|
+
name: 'expiry_date',
|
|
58
|
+
nullable: true,
|
|
59
|
+
})
|
|
60
|
+
expiry_date: Date;
|
|
61
|
+
}
|