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.
Files changed (345) hide show
  1. package/.env +6 -0
  2. package/.husky/pre-commit +0 -0
  3. package/.prettierrc +4 -0
  4. package/README.md +99 -0
  5. package/dist/app.controller.d.ts +6 -0
  6. package/dist/app.controller.js +34 -0
  7. package/dist/app.controller.js.map +1 -0
  8. package/dist/app.module.d.ts +2 -0
  9. package/dist/app.module.js +32 -0
  10. package/dist/app.module.js.map +1 -0
  11. package/dist/app.service.d.ts +3 -0
  12. package/dist/app.service.js +20 -0
  13. package/dist/app.service.js.map +1 -0
  14. package/dist/config/config.module.d.ts +2 -0
  15. package/dist/config/config.module.js +29 -0
  16. package/dist/config/config.module.js.map +1 -0
  17. package/dist/config/database.config.d.ts +4 -0
  18. package/dist/config/database.config.js +30 -0
  19. package/dist/config/database.config.js.map +1 -0
  20. package/dist/constant/global.constant.d.ts +9 -0
  21. package/dist/constant/global.constant.js +13 -0
  22. package/dist/constant/global.constant.js.map +1 -0
  23. package/dist/constant/status.constant.d.ts +4 -0
  24. package/dist/constant/status.constant.js +9 -0
  25. package/dist/constant/status.constant.js.map +1 -0
  26. package/dist/core.module.d.ts +4 -0
  27. package/dist/core.module.js +51 -0
  28. package/dist/core.module.js.map +1 -0
  29. package/dist/decorators/roles.decorator.d.ts +1 -0
  30. package/dist/decorators/roles.decorator.js +7 -0
  31. package/dist/decorators/roles.decorator.js.map +1 -0
  32. package/dist/index.d.ts +1 -0
  33. package/dist/index.js +18 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/main.d.ts +1 -0
  36. package/dist/main.js +36 -0
  37. package/dist/main.js.map +1 -0
  38. package/dist/module/auth/auth.module.d.ts +2 -0
  39. package/dist/module/auth/auth.module.js +49 -0
  40. package/dist/module/auth/auth.module.js.map +1 -0
  41. package/dist/module/auth/guards/google-auth.guard.d.ts +6 -0
  42. package/dist/module/auth/guards/google-auth.guard.js +21 -0
  43. package/dist/module/auth/guards/google-auth.guard.js.map +1 -0
  44. package/dist/module/auth/guards/jwt.guard.d.ts +10 -0
  45. package/dist/module/auth/guards/jwt.guard.js +36 -0
  46. package/dist/module/auth/guards/jwt.guard.js.map +1 -0
  47. package/dist/module/auth/guards/role.guard.d.ts +9 -0
  48. package/dist/module/auth/guards/role.guard.js +59 -0
  49. package/dist/module/auth/guards/role.guard.js.map +1 -0
  50. package/dist/module/auth/services/auth.service.d.ts +12 -0
  51. package/dist/module/auth/services/auth.service.js +43 -0
  52. package/dist/module/auth/services/auth.service.js.map +1 -0
  53. package/dist/module/auth/services/jwt.service.d.ts +6 -0
  54. package/dist/module/auth/services/jwt.service.js +28 -0
  55. package/dist/module/auth/services/jwt.service.js.map +1 -0
  56. package/dist/module/auth/strategies/google.strategy.d.ts +7 -0
  57. package/dist/module/auth/strategies/google.strategy.js +36 -0
  58. package/dist/module/auth/strategies/google.strategy.js.map +1 -0
  59. package/dist/module/auth/strategies/jwt.strategy.d.ts +14 -0
  60. package/dist/module/auth/strategies/jwt.strategy.js +54 -0
  61. package/dist/module/auth/strategies/jwt.strategy.js.map +1 -0
  62. package/dist/module/auth/strategies/local.strategy.d.ts +7 -0
  63. package/dist/module/auth/strategies/local.strategy.js +30 -0
  64. package/dist/module/auth/strategies/local.strategy.js.map +1 -0
  65. package/dist/module/dev/dev.module.d.ts +2 -0
  66. package/dist/module/dev/dev.module.js +25 -0
  67. package/dist/module/dev/dev.module.js.map +1 -0
  68. package/dist/module/dev/service/dev.service.d.ts +5 -0
  69. package/dist/module/dev/service/dev.service.js +25 -0
  70. package/dist/module/dev/service/dev.service.js.map +1 -0
  71. package/dist/module/enterprise/enterprise.module.d.ts +2 -0
  72. package/dist/module/enterprise/enterprise.module.js +19 -0
  73. package/dist/module/enterprise/enterprise.module.js.map +1 -0
  74. package/dist/module/enterprise/entity/enterprise.entity.d.ts +13 -0
  75. package/dist/module/enterprise/entity/enterprise.entity.js +64 -0
  76. package/dist/module/enterprise/entity/enterprise.entity.js.map +1 -0
  77. package/dist/module/enterprise/entity/organization.entity.d.ts +26 -0
  78. package/dist/module/enterprise/entity/organization.entity.js +120 -0
  79. package/dist/module/enterprise/entity/organization.entity.js.map +1 -0
  80. package/dist/module/master/controller/master.controller.d.ts +6 -0
  81. package/dist/module/master/controller/master.controller.js +43 -0
  82. package/dist/module/master/controller/master.controller.js.map +1 -0
  83. package/dist/module/master/service/master.service.d.ts +9 -0
  84. package/dist/module/master/service/master.service.js +50 -0
  85. package/dist/module/master/service/master.service.js.map +1 -0
  86. package/dist/module/meta/controller/entity.controller.d.ts +14 -0
  87. package/dist/module/meta/controller/entity.controller.js +98 -0
  88. package/dist/module/meta/controller/entity.controller.js.map +1 -0
  89. package/dist/module/meta/dto/entity-list-data.dto.d.ts +5 -0
  90. package/dist/module/meta/dto/entity-list-data.dto.js +7 -0
  91. package/dist/module/meta/dto/entity-list-data.dto.js.map +1 -0
  92. package/dist/module/meta/dto/entity-tab.dto.d.ts +4 -0
  93. package/dist/module/meta/dto/entity-tab.dto.js +7 -0
  94. package/dist/module/meta/dto/entity-tab.dto.js.map +1 -0
  95. package/dist/module/meta/entity/attribute-master.entity.d.ts +17 -0
  96. package/dist/module/meta/entity/attribute-master.entity.js +97 -0
  97. package/dist/module/meta/entity/attribute-master.entity.js.map +1 -0
  98. package/dist/module/meta/entity/base-entity.entity.d.ts +17 -0
  99. package/dist/module/meta/entity/base-entity.entity.js +91 -0
  100. package/dist/module/meta/entity/base-entity.entity.js.map +1 -0
  101. package/dist/module/meta/entity/entity-master.entity.d.ts +12 -0
  102. package/dist/module/meta/entity/entity-master.entity.js +86 -0
  103. package/dist/module/meta/entity/entity-master.entity.js.map +1 -0
  104. package/dist/module/meta/entity/entity-table-column.entity.d.ts +0 -0
  105. package/dist/module/meta/entity/entity-table-column.entity.js +1 -0
  106. package/dist/module/meta/entity/entity-table-column.entity.js.map +1 -0
  107. package/dist/module/meta/entity/entity-table.entity.d.ts +0 -0
  108. package/dist/module/meta/entity/entity-table.entity.js +1 -0
  109. package/dist/module/meta/entity/entity-table.entity.js.map +1 -0
  110. package/dist/module/meta/entity/preference.entity.d.ts +12 -0
  111. package/dist/module/meta/entity/preference.entity.js +89 -0
  112. package/dist/module/meta/entity/preference.entity.js.map +1 -0
  113. package/dist/module/meta/entity.module.d.ts +2 -0
  114. package/dist/module/meta/entity.module.js +45 -0
  115. package/dist/module/meta/entity.module.js.map +1 -0
  116. package/dist/module/meta/repository/attribute-master.repository.d.ts +7 -0
  117. package/dist/module/meta/repository/attribute-master.repository.js +41 -0
  118. package/dist/module/meta/repository/attribute-master.repository.js.map +1 -0
  119. package/dist/module/meta/repository/entity-table-column.repository.d.ts +7 -0
  120. package/dist/module/meta/repository/entity-table-column.repository.js +39 -0
  121. package/dist/module/meta/repository/entity-table-column.repository.js.map +1 -0
  122. package/dist/module/meta/repository/entity-table.repository.d.ts +7 -0
  123. package/dist/module/meta/repository/entity-table.repository.js +36 -0
  124. package/dist/module/meta/repository/entity-table.repository.js.map +1 -0
  125. package/dist/module/meta/repository/preference.repository.d.ts +7 -0
  126. package/dist/module/meta/repository/preference.repository.js +36 -0
  127. package/dist/module/meta/repository/preference.repository.js.map +1 -0
  128. package/dist/module/meta/service/entity-list.service.d.ts +15 -0
  129. package/dist/module/meta/service/entity-list.service.js +111 -0
  130. package/dist/module/meta/service/entity-list.service.js.map +1 -0
  131. package/dist/module/meta/service/entity-master.service.d.ts +7 -0
  132. package/dist/module/meta/service/entity-master.service.js +40 -0
  133. package/dist/module/meta/service/entity-master.service.js.map +1 -0
  134. package/dist/module/meta/service/entity-service-impl.service.d.ts +17 -0
  135. package/dist/module/meta/service/entity-service-impl.service.js +87 -0
  136. package/dist/module/meta/service/entity-service-impl.service.js.map +1 -0
  137. package/dist/module/meta/service/entity-table-column.service.d.ts +6 -0
  138. package/dist/module/meta/service/entity-table-column.service.js +33 -0
  139. package/dist/module/meta/service/entity-table-column.service.js.map +1 -0
  140. package/dist/module/meta/service/entity-table.service.d.ts +6 -0
  141. package/dist/module/meta/service/entity-table.service.js +28 -0
  142. package/dist/module/meta/service/entity-table.service.js.map +1 -0
  143. package/dist/module/meta/service/entity.service.d.ts +10 -0
  144. package/dist/module/meta/service/entity.service.js +3 -0
  145. package/dist/module/meta/service/entity.service.js.map +1 -0
  146. package/dist/module/meta/service/preference.service.d.ts +10 -0
  147. package/dist/module/meta/service/preference.service.js +37 -0
  148. package/dist/module/meta/service/preference.service.js.map +1 -0
  149. package/dist/module/module/controller/menu.controller.d.ts +8 -0
  150. package/dist/module/module/controller/menu.controller.js +41 -0
  151. package/dist/module/module/controller/menu.controller.js.map +1 -0
  152. package/dist/module/module/controller/module-access.controller.d.ts +13 -0
  153. package/dist/module/module/controller/module-access.controller.js +49 -0
  154. package/dist/module/module/controller/module-access.controller.js.map +1 -0
  155. package/dist/module/module/entity/menu.entity.d.ts +14 -0
  156. package/dist/module/module/entity/menu.entity.js +65 -0
  157. package/dist/module/module/entity/menu.entity.js.map +1 -0
  158. package/dist/module/module/entity/module-access.entity.d.ts +8 -0
  159. package/dist/module/module/entity/module-access.entity.js +44 -0
  160. package/dist/module/module/entity/module-access.entity.js.map +1 -0
  161. package/dist/module/module/entity/module-action.entity.d.ts +7 -0
  162. package/dist/module/module/entity/module-action.entity.js +40 -0
  163. package/dist/module/module/entity/module-action.entity.js.map +1 -0
  164. package/dist/module/module/entity/module.entity.d.ts +11 -0
  165. package/dist/module/module/entity/module.entity.js +53 -0
  166. package/dist/module/module/entity/module.entity.js.map +1 -0
  167. package/dist/module/module/module.module.d.ts +2 -0
  168. package/dist/module/module/module.module.js +53 -0
  169. package/dist/module/module/module.module.js.map +1 -0
  170. package/dist/module/module/repository/menu.repository.d.ts +9 -0
  171. package/dist/module/module/repository/menu.repository.js +64 -0
  172. package/dist/module/module/repository/menu.repository.js.map +1 -0
  173. package/dist/module/module/repository/module-access.repository.d.ts +15 -0
  174. package/dist/module/module/repository/module-access.repository.js +82 -0
  175. package/dist/module/module/repository/module-access.repository.js.map +1 -0
  176. package/dist/module/module/service/menu.service.d.ts +9 -0
  177. package/dist/module/module/service/menu.service.js +55 -0
  178. package/dist/module/module/service/menu.service.js.map +1 -0
  179. package/dist/module/module/service/module-access.service.d.ts +13 -0
  180. package/dist/module/module/service/module-access.service.js +40 -0
  181. package/dist/module/module/service/module-access.service.js.map +1 -0
  182. package/dist/module/user/controller/login.controller.d.ts +14 -0
  183. package/dist/module/user/controller/login.controller.js +80 -0
  184. package/dist/module/user/controller/login.controller.js.map +1 -0
  185. package/dist/module/user/controller/user.controller.d.ts +8 -0
  186. package/dist/module/user/controller/user.controller.js +42 -0
  187. package/dist/module/user/controller/user.controller.js.map +1 -0
  188. package/dist/module/user/dto/create-user.dto.d.ts +10 -0
  189. package/dist/module/user/dto/create-user.dto.js +64 -0
  190. package/dist/module/user/dto/create-user.dto.js.map +1 -0
  191. package/dist/module/user/entity/role.entity.d.ts +7 -0
  192. package/dist/module/user/entity/role.entity.js +39 -0
  193. package/dist/module/user/entity/role.entity.js.map +1 -0
  194. package/dist/module/user/entity/user-role-mapping.entity.d.ts +7 -0
  195. package/dist/module/user/entity/user-role-mapping.entity.js +41 -0
  196. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -0
  197. package/dist/module/user/entity/user-session.entity.d.ts +11 -0
  198. package/dist/module/user/entity/user-session.entity.js +86 -0
  199. package/dist/module/user/entity/user-session.entity.js.map +1 -0
  200. package/dist/module/user/entity/user.entity.d.ts +12 -0
  201. package/dist/module/user/entity/user.entity.js +59 -0
  202. package/dist/module/user/entity/user.entity.js.map +1 -0
  203. package/dist/module/user/repository/role.repository.d.ts +7 -0
  204. package/dist/module/user/repository/role.repository.js +34 -0
  205. package/dist/module/user/repository/role.repository.js.map +1 -0
  206. package/dist/module/user/repository/user-role-mapping.repository.d.ts +12 -0
  207. package/dist/module/user/repository/user-role-mapping.repository.js +55 -0
  208. package/dist/module/user/repository/user-role-mapping.repository.js.map +1 -0
  209. package/dist/module/user/repository/user.repository.d.ts +10 -0
  210. package/dist/module/user/repository/user.repository.js +49 -0
  211. package/dist/module/user/repository/user.repository.js.map +1 -0
  212. package/dist/module/user/repository/userSession.repository.d.ts +10 -0
  213. package/dist/module/user/repository/userSession.repository.js +45 -0
  214. package/dist/module/user/repository/userSession.repository.js.map +1 -0
  215. package/dist/module/user/service/login.service.d.ts +18 -0
  216. package/dist/module/user/service/login.service.js +69 -0
  217. package/dist/module/user/service/login.service.js.map +1 -0
  218. package/dist/module/user/service/role.service.d.ts +10 -0
  219. package/dist/module/user/service/role.service.js +34 -0
  220. package/dist/module/user/service/role.service.js.map +1 -0
  221. package/dist/module/user/service/user-role-mapping.service.d.ts +9 -0
  222. package/dist/module/user/service/user-role-mapping.service.js +37 -0
  223. package/dist/module/user/service/user-role-mapping.service.js.map +1 -0
  224. package/dist/module/user/service/user-session.service.d.ts +13 -0
  225. package/dist/module/user/service/user-session.service.js +51 -0
  226. package/dist/module/user/service/user-session.service.js.map +1 -0
  227. package/dist/module/user/service/user.service.d.ts +17 -0
  228. package/dist/module/user/service/user.service.js +112 -0
  229. package/dist/module/user/service/user.service.js.map +1 -0
  230. package/dist/module/user/user.module.d.ts +2 -0
  231. package/dist/module/user/user.module.js +64 -0
  232. package/dist/module/user/user.module.js.map +1 -0
  233. package/dist/tsconfig.build.tsbuildinfo +1 -0
  234. package/dist/utils/service/base64util.service.d.ts +4 -0
  235. package/dist/utils/service/base64util.service.js +21 -0
  236. package/dist/utils/service/base64util.service.js.map +1 -0
  237. package/dist/utils/service/clockIDGenUtil.service.d.ts +8 -0
  238. package/dist/utils/service/clockIDGenUtil.service.js +31 -0
  239. package/dist/utils/service/clockIDGenUtil.service.js.map +1 -0
  240. package/dist/utils/service/dateUtil.service.d.ts +3 -0
  241. package/dist/utils/service/dateUtil.service.js +28 -0
  242. package/dist/utils/service/dateUtil.service.js.map +1 -0
  243. package/dist/utils/service/encryptUtil.service.d.ts +9 -0
  244. package/dist/utils/service/encryptUtil.service.js +112 -0
  245. package/dist/utils/service/encryptUtil.service.js.map +1 -0
  246. package/dist/utils/service/excel-helper.service.d.ts +7 -0
  247. package/dist/utils/service/excel-helper.service.js +44 -0
  248. package/dist/utils/service/excel-helper.service.js.map +1 -0
  249. package/dist/utils/service/excelUtil.service.d.ts +3 -0
  250. package/dist/utils/service/excelUtil.service.js +17 -0
  251. package/dist/utils/service/excelUtil.service.js.map +1 -0
  252. package/dist/utils/service/json-util.service.d.ts +3 -0
  253. package/dist/utils/service/json-util.service.js +24 -0
  254. package/dist/utils/service/json-util.service.js.map +1 -0
  255. package/dist/utils/service/loggingUtil.service.d.ts +4 -0
  256. package/dist/utils/service/loggingUtil.service.js +49 -0
  257. package/dist/utils/service/loggingUtil.service.js.map +1 -0
  258. package/dist/utils/service/reflection-helper.service.d.ts +9 -0
  259. package/dist/utils/service/reflection-helper.service.js +60 -0
  260. package/dist/utils/service/reflection-helper.service.js.map +1 -0
  261. package/dist/utils/utils.module.d.ts +2 -0
  262. package/dist/utils/utils.module.js +26 -0
  263. package/dist/utils/utils.module.js.map +1 -0
  264. package/eslint.config.mjs +35 -0
  265. package/nest-cli.json +8 -0
  266. package/package.json +97 -0
  267. package/src/app.controller.ts +12 -0
  268. package/src/app.service.ts +8 -0
  269. package/src/config/config.module.ts +18 -0
  270. package/src/config/database.config.ts +20 -0
  271. package/src/constant/global.constant.ts +10 -0
  272. package/src/constant/status.constant.ts +3 -0
  273. package/src/core.module.ts +40 -0
  274. package/src/decorators/roles.decorator.ts +4 -0
  275. package/src/index.ts +1 -0
  276. package/src/module/auth/auth.module.ts +36 -0
  277. package/src/module/auth/guards/google-auth.guard.ts +9 -0
  278. package/src/module/auth/guards/jwt.guard.ts +22 -0
  279. package/src/module/auth/guards/role.guard.ts +68 -0
  280. package/src/module/auth/services/auth.service.ts +29 -0
  281. package/src/module/auth/services/jwt.service.ts +11 -0
  282. package/src/module/auth/strategies/google.strategy.ts +29 -0
  283. package/src/module/auth/strategies/jwt.strategy.ts +43 -0
  284. package/src/module/auth/strategies/local.strategy.ts +13 -0
  285. package/src/module/dev/dev.module.ts +12 -0
  286. package/src/module/dev/service/dev.service.ts +7 -0
  287. package/src/module/enterprise/enterprise.module.ts +8 -0
  288. package/src/module/enterprise/entity/enterprise.entity.ts +37 -0
  289. package/src/module/enterprise/entity/organization.entity.ts +80 -0
  290. package/src/module/master/controller/master.controller.ts +22 -0
  291. package/src/module/master/service/master.service.ts +37 -0
  292. package/src/module/meta/controller/entity.controller.ts +108 -0
  293. package/src/module/meta/entity/attribute-master.entity.ts +67 -0
  294. package/src/module/meta/entity/base-entity.entity.ts +53 -0
  295. package/src/module/meta/entity/entity-master.entity.ts +62 -0
  296. package/src/module/meta/entity/entity-table-column.entity.ts +0 -0
  297. package/src/module/meta/entity/entity-table.entity.ts +0 -0
  298. package/src/module/meta/entity/preference.entity.ts +65 -0
  299. package/src/module/meta/entity.module.ts +32 -0
  300. package/src/module/meta/repository/attribute-master.repository.ts +28 -0
  301. package/src/module/meta/repository/preference.repository.ts +20 -0
  302. package/src/module/meta/service/entity-master.service.ts +26 -0
  303. package/src/module/meta/service/entity-service-impl.service.ts +131 -0
  304. package/src/module/meta/service/entity.service.ts +23 -0
  305. package/src/module/meta/service/preference.service.ts +24 -0
  306. package/src/module/module/controller/menu.controller.ts +15 -0
  307. package/src/module/module/controller/module-access.controller.ts +20 -0
  308. package/src/module/module/entity/menu.entity.ts +38 -0
  309. package/src/module/module/entity/module-access.entity.ts +22 -0
  310. package/src/module/module/entity/module-action.entity.ts +19 -0
  311. package/src/module/module/entity/module.entity.ts +29 -0
  312. package/src/module/module/module.module.ts +42 -0
  313. package/src/module/module/repository/menu.repository.ts +69 -0
  314. package/src/module/module/repository/module-access.repository.ts +66 -0
  315. package/src/module/module/service/menu.service.ts +61 -0
  316. package/src/module/module/service/module-access.service.ts +25 -0
  317. package/src/module/user/controller/login.controller.ts +55 -0
  318. package/src/module/user/controller/user.controller.ts +28 -0
  319. package/src/module/user/dto/create-user.dto.ts +52 -0
  320. package/src/module/user/entity/role.entity.ts +20 -0
  321. package/src/module/user/entity/user-role-mapping.entity.ts +21 -0
  322. package/src/module/user/entity/user-session.entity.ts +61 -0
  323. package/src/module/user/entity/user.entity.ts +35 -0
  324. package/src/module/user/repository/role.repository.ts +16 -0
  325. package/src/module/user/repository/user-role-mapping.repository.ts +44 -0
  326. package/src/module/user/repository/user.repository.ts +33 -0
  327. package/src/module/user/repository/userSession.repository.ts +33 -0
  328. package/src/module/user/service/login.service.ts +66 -0
  329. package/src/module/user/service/role.service.ts +29 -0
  330. package/src/module/user/service/user-role-mapping.service.ts +29 -0
  331. package/src/module/user/service/user-session.service.ts +41 -0
  332. package/src/module/user/service/user.service.ts +141 -0
  333. package/src/module/user/user.module.ts +51 -0
  334. package/src/utils/service/base64util.service.ts +19 -0
  335. package/src/utils/service/clockIDGenUtil.service.ts +21 -0
  336. package/src/utils/service/dateUtil.service.ts +17 -0
  337. package/src/utils/service/encryptUtil.service.ts +97 -0
  338. package/src/utils/service/excel-helper.service.ts +56 -0
  339. package/src/utils/service/excelUtil.service.ts +15 -0
  340. package/src/utils/service/json-util.service.ts +23 -0
  341. package/src/utils/service/loggingUtil.service.ts +56 -0
  342. package/src/utils/service/reflection-helper.service.ts +53 -0
  343. package/src/utils/utils.module.ts +14 -0
  344. package/tsconfig.build.json +4 -0
  345. 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
+ }