@tomei/sso 0.60.4 → 0.61.0

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 (677) hide show
  1. package/.commitlintrc.json +22 -22
  2. package/.gitlab-ci.yml +16 -16
  3. package/.husky/commit-msg +15 -15
  4. package/.husky/pre-commit +7 -7
  5. package/.prettierrc +4 -4
  6. package/Jenkinsfile +57 -57
  7. package/README.md +23 -23
  8. package/__tests__/unit/components/group/group.spec.ts +79 -79
  9. package/__tests__/unit/components/group-object-privilege/group-object-privilege.spec.ts +88 -88
  10. package/__tests__/unit/components/group-privilege/group-privilege.spec.ts +68 -68
  11. package/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.ts +66 -66
  12. package/__tests__/unit/components/group-system-access/group-system-access.spec.ts +83 -83
  13. package/__tests__/unit/components/login-user/l.spec.ts +746 -746
  14. package/__tests__/unit/components/login-user/login.spec.ts +1164 -1164
  15. package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +31 -31
  16. package/__tests__/unit/components/system/system.spec.ts +254 -254
  17. package/__tests__/unit/components/system-privilege/system-privilege.spec.ts +83 -83
  18. package/__tests__/unit/components/user-group/user-group.spec.ts +86 -86
  19. package/__tests__/unit/components/user-object-privilege/user-object-privilege.spec.ts +78 -78
  20. package/__tests__/unit/components/user-privilege/user-privilege.spec.ts +72 -72
  21. package/__tests__/unit/components/user-system-access/user-system-access.spec.ts +89 -89
  22. package/__tests__/unit/redis-client/redis.service.spec.ts +23 -23
  23. package/__tests__/unit/session/session.service.spec.ts +47 -47
  24. package/__tests__/unit/system-privilege/system-privilage.spec.ts +91 -91
  25. package/coverage/clover.xml +1452 -1452
  26. package/coverage/coverage-final.json +47 -47
  27. package/coverage/lcov-report/base.css +224 -224
  28. package/coverage/lcov-report/block-navigation.js +87 -87
  29. package/coverage/lcov-report/components/group/group.repository.ts.html +117 -117
  30. package/coverage/lcov-report/components/group/group.ts.html +327 -327
  31. package/coverage/lcov-report/components/group/index.html +130 -130
  32. package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.repository.ts.html +117 -117
  33. package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.ts.html +321 -321
  34. package/coverage/lcov-report/components/group-object-privilege/index.html +130 -130
  35. package/coverage/lcov-report/components/group-privilege/group-privilege.repository.ts.html +117 -117
  36. package/coverage/lcov-report/components/group-privilege/group-privilege.ts.html +303 -303
  37. package/coverage/lcov-report/components/group-privilege/index.html +130 -130
  38. package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.repository.ts.html +117 -117
  39. package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.ts.html +327 -327
  40. package/coverage/lcov-report/components/group-reporting-user/index.html +130 -130
  41. package/coverage/lcov-report/components/group-system-access/group-system-access.repository.ts.html +117 -117
  42. package/coverage/lcov-report/components/group-system-access/group-system-access.ts.html +309 -309
  43. package/coverage/lcov-report/components/group-system-access/index.html +130 -130
  44. package/coverage/lcov-report/components/login-history/index.html +115 -115
  45. package/coverage/lcov-report/components/login-history/login-history.repository.ts.html +117 -117
  46. package/coverage/lcov-report/components/login-user/index.html +130 -130
  47. package/coverage/lcov-report/components/login-user/login-user.ts.html +5007 -5007
  48. package/coverage/lcov-report/components/login-user/user.repository.ts.html +117 -117
  49. package/coverage/lcov-report/components/password-hash/index.html +115 -115
  50. package/coverage/lcov-report/components/password-hash/password-hash.service.ts.html +126 -126
  51. package/coverage/lcov-report/components/system/index.html +130 -130
  52. package/coverage/lcov-report/components/system/system.repository.ts.html +117 -117
  53. package/coverage/lcov-report/components/system/system.ts.html +909 -909
  54. package/coverage/lcov-report/components/system-privilege/index.html +130 -130
  55. package/coverage/lcov-report/components/system-privilege/system-privilege.repository.ts.html +120 -120
  56. package/coverage/lcov-report/components/system-privilege/system-privilege.ts.html +390 -390
  57. package/coverage/lcov-report/components/user-group/index.html +130 -130
  58. package/coverage/lcov-report/components/user-group/user-group.repository.ts.html +117 -117
  59. package/coverage/lcov-report/components/user-group/user-group.ts.html +354 -354
  60. package/coverage/lcov-report/components/user-object-privilege/index.html +130 -130
  61. package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.repository.ts.html +117 -117
  62. package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.ts.html +312 -312
  63. package/coverage/lcov-report/components/user-privilege/index.html +130 -130
  64. package/coverage/lcov-report/components/user-privilege/user-privilege.repository.ts.html +117 -117
  65. package/coverage/lcov-report/components/user-privilege/user-privilege.ts.html +306 -306
  66. package/coverage/lcov-report/components/user-system-access/index.html +130 -130
  67. package/coverage/lcov-report/components/user-system-access/user-system-access.repository.ts.html +117 -117
  68. package/coverage/lcov-report/components/user-system-access/user-system-access.ts.html +312 -312
  69. package/coverage/lcov-report/enum/group-type.enum.ts.html +108 -108
  70. package/coverage/lcov-report/enum/index.html +160 -160
  71. package/coverage/lcov-report/enum/index.ts.html +93 -93
  72. package/coverage/lcov-report/enum/user-status.enum.ts.html +105 -105
  73. package/coverage/lcov-report/enum/yn.enum.ts.html +96 -96
  74. package/coverage/lcov-report/index.html +370 -370
  75. package/coverage/lcov-report/models/group-object-privilege.entity.ts.html +333 -333
  76. package/coverage/lcov-report/models/group-privilege.entity.ts.html +315 -315
  77. package/coverage/lcov-report/models/group-reporting-user.entity.ts.html +339 -339
  78. package/coverage/lcov-report/models/group-system-access.entity.ts.html +324 -324
  79. package/coverage/lcov-report/models/group.entity.ts.html +435 -435
  80. package/coverage/lcov-report/models/index.html +310 -310
  81. package/coverage/lcov-report/models/login-history.entity.ts.html +252 -252
  82. package/coverage/lcov-report/models/staff.entity.ts.html +411 -411
  83. package/coverage/lcov-report/models/system-privilege.entity.ts.html +354 -354
  84. package/coverage/lcov-report/models/system.entity.ts.html +423 -423
  85. package/coverage/lcov-report/models/user-group.entity.ts.html +354 -354
  86. package/coverage/lcov-report/models/user-object-privilege.entity.ts.html +330 -330
  87. package/coverage/lcov-report/models/user-privilege.entity.ts.html +315 -315
  88. package/coverage/lcov-report/models/user-system-access.entity.ts.html +315 -315
  89. package/coverage/lcov-report/models/user.entity.ts.html +522 -522
  90. package/coverage/lcov-report/prettify.css +1 -1
  91. package/coverage/lcov-report/prettify.js +2 -2
  92. package/coverage/lcov-report/redis-client/index.html +115 -115
  93. package/coverage/lcov-report/redis-client/redis.service.ts.html +240 -240
  94. package/coverage/lcov-report/session/index.html +115 -115
  95. package/coverage/lcov-report/session/session.service.ts.html +246 -246
  96. package/coverage/lcov-report/sorter.js +196 -196
  97. package/coverage/lcov.info +2490 -2490
  98. package/coverage/test-report.xml +128 -128
  99. package/create-sso-user.sql +39 -39
  100. package/dist/src/components/login-user/user.js +8 -0
  101. package/dist/src/components/login-user/user.js.map +1 -1
  102. package/dist/tsconfig.tsbuildinfo +1 -1
  103. package/eslint.config.mjs +58 -58
  104. package/jest.config.js +14 -14
  105. package/migrations/20240314080602-create-user-table.js +124 -124
  106. package/migrations/20240314080603-create-user-group-table.js +85 -85
  107. package/migrations/20240314080604-create-user-user-group-table.js +55 -55
  108. package/migrations/20240314080605-create-login-history-table.js +53 -53
  109. package/migrations/20240527064925-create-system-table.js +78 -78
  110. package/migrations/20240527064926-create-system-privilege-table.js +71 -71
  111. package/migrations/20240527065342-create-group-table.js +93 -93
  112. package/migrations/20240527065633-create-group-reporting-user-table.js +76 -76
  113. package/migrations/20240528011551-create-group-system-access-table.js +72 -72
  114. package/migrations/20240528023018-user-system-access-table.js +75 -75
  115. package/migrations/20240528032229-user-privilege-table.js +76 -76
  116. package/migrations/20240528063003-create-group-privilege-table.js +76 -76
  117. package/migrations/20240528063051-create-group-object-privilege-table.js +84 -84
  118. package/migrations/20240528063107-create-user-object-privilege-table.js +84 -84
  119. package/migrations/20240528063108-create-api-key-table.js +85 -85
  120. package/migrations/20241104104802-create-building-table.js +95 -95
  121. package/migrations/20250108091132-add-area-manager-user-id-to-building-table.js +14 -14
  122. package/migrations/20250108091133-add-passcode-to-user-table.js +36 -36
  123. package/migrations/20250210115636-create-user-reporting-hierarchy.js +76 -76
  124. package/migrations/20250326043818-crate-user-password-history.js +42 -42
  125. package/package.json +90 -90
  126. package/sampledotenv +7 -7
  127. package/sonar-project.properties +22 -22
  128. package/src/components/api-key/api-key.repository.ts +15 -15
  129. package/src/components/api-key/api-key.ts +448 -448
  130. package/src/components/api-key/index.ts +4 -4
  131. package/src/components/building/building.repository.ts +27 -27
  132. package/src/components/building/index.ts +2 -2
  133. package/src/components/group/group.repository.ts +26 -26
  134. package/src/components/group/group.ts +2284 -2284
  135. package/src/components/group/index.ts +3 -3
  136. package/src/components/group-object-privilege/group-object-privilege.repository.ts +25 -25
  137. package/src/components/group-object-privilege/group-object-privilege.ts +278 -278
  138. package/src/components/group-object-privilege/index.ts +2 -2
  139. package/src/components/group-privilege/group-privilege.repository.ts +29 -29
  140. package/src/components/group-privilege/group-privilege.ts +84 -84
  141. package/src/components/group-privilege/index.ts +2 -2
  142. package/src/components/group-reporting-user/group-reporting-user.repository.ts +23 -23
  143. package/src/components/group-reporting-user/group-reporting-user.ts +506 -506
  144. package/src/components/group-reporting-user/index.ts +3 -3
  145. package/src/components/group-system-access/group-system-access.repository.ts +43 -43
  146. package/src/components/group-system-access/group-system-access.ts +90 -90
  147. package/src/components/group-system-access/index.ts +2 -2
  148. package/src/components/index.ts +20 -20
  149. package/src/components/login-history/index.ts +1 -1
  150. package/src/components/login-history/login-history.repository.ts +11 -11
  151. package/src/components/login-user/index.ts +5 -5
  152. package/src/components/login-user/interfaces/check-user-info-duplicated.interface.ts +7 -7
  153. package/src/components/login-user/interfaces/index.ts +1 -1
  154. package/src/components/login-user/interfaces/system-access.interface.ts +13 -13
  155. package/src/components/login-user/interfaces/user-info.interface.ts +34 -34
  156. package/src/components/login-user/login-user.ts +362 -362
  157. package/src/components/login-user/user.repository.ts +11 -11
  158. package/src/components/login-user/user.ts +3142 -3134
  159. package/src/components/password-hash/index.ts +2 -2
  160. package/src/components/password-hash/interfaces/index.ts +1 -1
  161. package/src/components/password-hash/interfaces/password-hash-service.interface.ts +4 -4
  162. package/src/components/password-hash/password-hash.service.ts +14 -14
  163. package/src/components/staff/index.ts +2 -2
  164. package/src/components/staff/staff.repository.ts +27 -27
  165. package/src/components/system/index.ts +3 -3
  166. package/src/components/system/system.repository.ts +11 -11
  167. package/src/components/system/system.ts +456 -456
  168. package/src/components/system-privilege/index.ts +4 -4
  169. package/src/components/system-privilege/system-privilege.repository.ts +18 -18
  170. package/src/components/system-privilege/system-privilege.ts +541 -541
  171. package/src/components/user-group/index.ts +2 -2
  172. package/src/components/user-group/user-group.repository.ts +19 -19
  173. package/src/components/user-group/user-group.ts +764 -764
  174. package/src/components/user-object-privilege/index.ts +2 -2
  175. package/src/components/user-object-privilege/user-object-privilege.repository.ts +11 -11
  176. package/src/components/user-object-privilege/user-object-privilege.ts +79 -79
  177. package/src/components/user-password-history/index.ts +2 -2
  178. package/src/components/user-password-history/user-password-history.repository.ts +39 -39
  179. package/src/components/user-password-history/user-password-history.ts +187 -187
  180. package/src/components/user-privilege/index.ts +2 -2
  181. package/src/components/user-privilege/user-privilege.repository.ts +25 -25
  182. package/src/components/user-privilege/user-privilege.ts +662 -662
  183. package/src/components/user-reporting-hierarchy/index.ts +2 -2
  184. package/src/components/user-reporting-hierarchy/user-reporting-hierarchy.repository.ts +30 -30
  185. package/src/components/user-reporting-hierarchy/user-reporting-hierarchy.ts +505 -505
  186. package/src/components/user-system-access/index.ts +2 -2
  187. package/src/components/user-system-access/user-system-access.repository.ts +41 -41
  188. package/src/components/user-system-access/user-system-access.ts +717 -717
  189. package/src/database.ts +15 -15
  190. package/src/enum/api-key.enum.ts +5 -5
  191. package/src/enum/building-type.enum.ts +6 -6
  192. package/src/enum/group-type.enum.ts +8 -8
  193. package/src/enum/index.ts +6 -6
  194. package/src/enum/login-status.enum.ts +4 -4
  195. package/src/enum/object-status.enum.ts +4 -4
  196. package/src/enum/user-status.enum.ts +7 -7
  197. package/src/enum/yn.enum.ts +4 -4
  198. package/src/index.ts +8 -8
  199. package/src/interfaces/api-key-attr.interface.ts +16 -16
  200. package/src/interfaces/group-object-privilege.interface.ts +14 -14
  201. package/src/interfaces/group-privilege.interface.ts +10 -10
  202. package/src/interfaces/group-reporting-user.interface.ts +11 -11
  203. package/src/interfaces/group-search-attr.interface.ts +9 -9
  204. package/src/interfaces/group-system-access.interface.ts +10 -10
  205. package/src/interfaces/group.interface.ts +17 -17
  206. package/src/interfaces/index.ts +13 -13
  207. package/src/interfaces/system-login.interface.ts +6 -6
  208. package/src/interfaces/system-privilege-search.interface.ts +5 -5
  209. package/src/interfaces/system-privilege.interface.ts +11 -11
  210. package/src/interfaces/system-search-attr.interface.ts +5 -5
  211. package/src/interfaces/system.interface.ts +15 -15
  212. package/src/interfaces/user-group.interface.ts +12 -12
  213. package/src/interfaces/user-object-privilege.interface.ts +14 -14
  214. package/src/interfaces/user-password-history.interface.ts +6 -6
  215. package/src/interfaces/user-privilege.interface.ts +10 -10
  216. package/src/interfaces/user-reporting-hierarchy.interface.ts +11 -11
  217. package/src/interfaces/user-session.interface.ts +5 -5
  218. package/src/interfaces/user-system-access.interface.ts +10 -10
  219. package/src/models/api-key-entity.ts +101 -101
  220. package/src/models/building.entity.ts +103 -103
  221. package/src/models/group-object-privilege.entity.ts +91 -91
  222. package/src/models/group-privilege.entity.ts +78 -78
  223. package/src/models/group-reporting-user.entity.ts +95 -95
  224. package/src/models/group-system-access.entity.ts +81 -81
  225. package/src/models/group.entity.ts +127 -127
  226. package/src/models/login-history.entity.ts +63 -63
  227. package/src/models/staff.entity.ts +91 -91
  228. package/src/models/system-privilege.entity.ts +90 -90
  229. package/src/models/system.entity.ts +113 -113
  230. package/src/models/user-group.entity.ts +91 -91
  231. package/src/models/user-object-privilege.entity.ts +90 -90
  232. package/src/models/user-password-history.ts +51 -51
  233. package/src/models/user-privilege.entity.ts +78 -78
  234. package/src/models/user-reporting-hierarchy.entity.ts +102 -102
  235. package/src/models/user-system-access.entity.ts +87 -87
  236. package/src/models/user.entity.ts +193 -193
  237. package/src/redis-client/__mocks__/jest-initial-setup.ts +2 -2
  238. package/src/redis-client/__mocks__/redis-mock.ts +28 -28
  239. package/src/redis-client/index.ts +1 -1
  240. package/src/redis-client/redis.service.ts +75 -75
  241. package/src/session/index.ts +2 -2
  242. package/src/session/interfaces/index.ts +1 -1
  243. package/src/session/interfaces/session-service.interface.ts +26 -26
  244. package/src/session/session.service.ts +96 -96
  245. package/src/types/auth-context.ts +10 -10
  246. package/src/types/index.ts +1 -1
  247. package/tsconfig.build.json +5 -5
  248. package/tsconfig.json +23 -23
  249. package/dist/components/api-key/api-key.d.ts +0 -85
  250. package/dist/components/api-key/api-key.d.ts.map +0 -1
  251. package/dist/components/api-key/api-key.js +0 -245
  252. package/dist/components/api-key/api-key.js.map +0 -1
  253. package/dist/components/api-key/api-key.repository.d.ts +0 -7
  254. package/dist/components/api-key/api-key.repository.d.ts.map +0 -1
  255. package/dist/components/api-key/api-key.repository.js +0 -18
  256. package/dist/components/api-key/api-key.repository.js.map +0 -1
  257. package/dist/components/api-key/index.d.ts +0 -4
  258. package/dist/components/api-key/index.d.ts.map +0 -1
  259. package/dist/components/api-key/index.js +0 -8
  260. package/dist/components/api-key/index.js.map +0 -1
  261. package/dist/components/building/building.repository.d.ts +0 -7
  262. package/dist/components/building/building.repository.d.ts.map +0 -1
  263. package/dist/components/building/building.repository.js +0 -30
  264. package/dist/components/building/building.repository.js.map +0 -1
  265. package/dist/components/building/index.d.ts +0 -2
  266. package/dist/components/building/index.d.ts.map +0 -1
  267. package/dist/components/building/index.js +0 -18
  268. package/dist/components/building/index.js.map +0 -1
  269. package/dist/components/group/group.d.ts +0 -129
  270. package/dist/components/group/group.d.ts.map +0 -1
  271. package/dist/components/group/group.js +0 -1337
  272. package/dist/components/group/group.js.map +0 -1
  273. package/dist/components/group/group.repository.d.ts +0 -8
  274. package/dist/components/group/group.repository.d.ts.map +0 -1
  275. package/dist/components/group/group.repository.js +0 -29
  276. package/dist/components/group/group.repository.js.map +0 -1
  277. package/dist/components/group/index.d.ts +0 -3
  278. package/dist/components/group/index.d.ts.map +0 -1
  279. package/dist/components/group/index.js +0 -19
  280. package/dist/components/group/index.js.map +0 -1
  281. package/dist/components/group-object-privilege/group-object-privilege.d.ts +0 -28
  282. package/dist/components/group-object-privilege/group-object-privilege.d.ts.map +0 -1
  283. package/dist/components/group-object-privilege/group-object-privilege.js +0 -163
  284. package/dist/components/group-object-privilege/group-object-privilege.js.map +0 -1
  285. package/dist/components/group-object-privilege/group-object-privilege.repository.d.ts +0 -7
  286. package/dist/components/group-object-privilege/group-object-privilege.repository.d.ts.map +0 -1
  287. package/dist/components/group-object-privilege/group-object-privilege.repository.js +0 -26
  288. package/dist/components/group-object-privilege/group-object-privilege.repository.js.map +0 -1
  289. package/dist/components/group-object-privilege/index.d.ts +0 -3
  290. package/dist/components/group-object-privilege/index.d.ts.map +0 -1
  291. package/dist/components/group-object-privilege/index.js +0 -19
  292. package/dist/components/group-object-privilege/index.js.map +0 -1
  293. package/dist/components/group-privilege/group-privilege.d.ts +0 -25
  294. package/dist/components/group-privilege/group-privilege.d.ts.map +0 -1
  295. package/dist/components/group-privilege/group-privilege.js +0 -67
  296. package/dist/components/group-privilege/group-privilege.js.map +0 -1
  297. package/dist/components/group-privilege/group-privilege.repository.d.ts +0 -7
  298. package/dist/components/group-privilege/group-privilege.repository.d.ts.map +0 -1
  299. package/dist/components/group-privilege/group-privilege.repository.js +0 -28
  300. package/dist/components/group-privilege/group-privilege.repository.js.map +0 -1
  301. package/dist/components/group-privilege/index.d.ts +0 -3
  302. package/dist/components/group-privilege/index.d.ts.map +0 -1
  303. package/dist/components/group-privilege/index.js +0 -19
  304. package/dist/components/group-privilege/index.js.map +0 -1
  305. package/dist/components/group-reporting-user/group-reporting-user.d.ts +0 -30
  306. package/dist/components/group-reporting-user/group-reporting-user.d.ts.map +0 -1
  307. package/dist/components/group-reporting-user/group-reporting-user.js +0 -277
  308. package/dist/components/group-reporting-user/group-reporting-user.js.map +0 -1
  309. package/dist/components/group-reporting-user/group-reporting-user.repository.d.ts +0 -7
  310. package/dist/components/group-reporting-user/group-reporting-user.repository.d.ts.map +0 -1
  311. package/dist/components/group-reporting-user/group-reporting-user.repository.js +0 -23
  312. package/dist/components/group-reporting-user/group-reporting-user.repository.js.map +0 -1
  313. package/dist/components/group-reporting-user/index.d.ts +0 -3
  314. package/dist/components/group-reporting-user/index.d.ts.map +0 -1
  315. package/dist/components/group-reporting-user/index.js +0 -19
  316. package/dist/components/group-reporting-user/index.js.map +0 -1
  317. package/dist/components/group-system-access/group-system-access.d.ts +0 -28
  318. package/dist/components/group-system-access/group-system-access.d.ts.map +0 -1
  319. package/dist/components/group-system-access/group-system-access.js +0 -70
  320. package/dist/components/group-system-access/group-system-access.js.map +0 -1
  321. package/dist/components/group-system-access/group-system-access.repository.d.ts +0 -8
  322. package/dist/components/group-system-access/group-system-access.repository.d.ts.map +0 -1
  323. package/dist/components/group-system-access/group-system-access.repository.js +0 -46
  324. package/dist/components/group-system-access/group-system-access.repository.js.map +0 -1
  325. package/dist/components/group-system-access/index.d.ts +0 -3
  326. package/dist/components/group-system-access/index.d.ts.map +0 -1
  327. package/dist/components/group-system-access/index.js +0 -19
  328. package/dist/components/group-system-access/index.js.map +0 -1
  329. package/dist/components/index.d.ts +0 -18
  330. package/dist/components/index.d.ts.map +0 -1
  331. package/dist/components/index.js +0 -34
  332. package/dist/components/index.js.map +0 -1
  333. package/dist/components/login-history/index.d.ts +0 -2
  334. package/dist/components/login-history/index.d.ts.map +0 -1
  335. package/dist/components/login-history/index.js +0 -18
  336. package/dist/components/login-history/index.js.map +0 -1
  337. package/dist/components/login-history/login-history.repository.d.ts +0 -6
  338. package/dist/components/login-history/login-history.repository.d.ts.map +0 -1
  339. package/dist/components/login-history/login-history.repository.js +0 -15
  340. package/dist/components/login-history/login-history.repository.js.map +0 -1
  341. package/dist/components/login-user/index.d.ts +0 -5
  342. package/dist/components/login-user/index.d.ts.map +0 -1
  343. package/dist/components/login-user/index.js +0 -21
  344. package/dist/components/login-user/index.js.map +0 -1
  345. package/dist/components/login-user/interfaces/check-user-info-duplicated.interface.d.ts +0 -8
  346. package/dist/components/login-user/interfaces/check-user-info-duplicated.interface.d.ts.map +0 -1
  347. package/dist/components/login-user/interfaces/check-user-info-duplicated.interface.js +0 -3
  348. package/dist/components/login-user/interfaces/check-user-info-duplicated.interface.js.map +0 -1
  349. package/dist/components/login-user/interfaces/index.d.ts +0 -2
  350. package/dist/components/login-user/interfaces/index.d.ts.map +0 -1
  351. package/dist/components/login-user/interfaces/index.js +0 -18
  352. package/dist/components/login-user/interfaces/index.js.map +0 -1
  353. package/dist/components/login-user/interfaces/system-access.interface.d.ts +0 -14
  354. package/dist/components/login-user/interfaces/system-access.interface.d.ts.map +0 -1
  355. package/dist/components/login-user/interfaces/system-access.interface.js +0 -3
  356. package/dist/components/login-user/interfaces/system-access.interface.js.map +0 -1
  357. package/dist/components/login-user/interfaces/user-info.interface.d.ts +0 -31
  358. package/dist/components/login-user/interfaces/user-info.interface.d.ts.map +0 -1
  359. package/dist/components/login-user/interfaces/user-info.interface.js +0 -3
  360. package/dist/components/login-user/interfaces/user-info.interface.js.map +0 -1
  361. package/dist/components/login-user/login-user.d.ts +0 -14
  362. package/dist/components/login-user/login-user.d.ts.map +0 -1
  363. package/dist/components/login-user/login-user.js +0 -127
  364. package/dist/components/login-user/login-user.js.map +0 -1
  365. package/dist/components/login-user/user.d.ts +0 -155
  366. package/dist/components/login-user/user.d.ts.map +0 -1
  367. package/dist/components/login-user/user.js +0 -1753
  368. package/dist/components/login-user/user.js.map +0 -1
  369. package/dist/components/login-user/user.repository.d.ts +0 -6
  370. package/dist/components/login-user/user.repository.d.ts.map +0 -1
  371. package/dist/components/login-user/user.repository.js +0 -15
  372. package/dist/components/login-user/user.repository.js.map +0 -1
  373. package/dist/components/password-hash/index.d.ts +0 -3
  374. package/dist/components/password-hash/index.d.ts.map +0 -1
  375. package/dist/components/password-hash/index.js +0 -19
  376. package/dist/components/password-hash/index.js.map +0 -1
  377. package/dist/components/password-hash/interfaces/index.d.ts +0 -2
  378. package/dist/components/password-hash/interfaces/index.d.ts.map +0 -1
  379. package/dist/components/password-hash/interfaces/index.js +0 -18
  380. package/dist/components/password-hash/interfaces/index.js.map +0 -1
  381. package/dist/components/password-hash/interfaces/password-hash-service.interface.d.ts +0 -5
  382. package/dist/components/password-hash/interfaces/password-hash-service.interface.d.ts.map +0 -1
  383. package/dist/components/password-hash/interfaces/password-hash-service.interface.js +0 -3
  384. package/dist/components/password-hash/interfaces/password-hash-service.interface.js.map +0 -1
  385. package/dist/components/password-hash/password-hash.service.d.ts +0 -7
  386. package/dist/components/password-hash/password-hash.service.d.ts.map +0 -1
  387. package/dist/components/password-hash/password-hash.service.js +0 -48
  388. package/dist/components/password-hash/password-hash.service.js.map +0 -1
  389. package/dist/components/staff/index.d.ts +0 -2
  390. package/dist/components/staff/index.d.ts.map +0 -1
  391. package/dist/components/staff/index.js +0 -18
  392. package/dist/components/staff/index.js.map +0 -1
  393. package/dist/components/staff/staff.repository.d.ts +0 -7
  394. package/dist/components/staff/staff.repository.d.ts.map +0 -1
  395. package/dist/components/staff/staff.repository.js +0 -30
  396. package/dist/components/staff/staff.repository.js.map +0 -1
  397. package/dist/components/system/index.d.ts +0 -3
  398. package/dist/components/system/index.d.ts.map +0 -1
  399. package/dist/components/system/index.js +0 -19
  400. package/dist/components/system/index.js.map +0 -1
  401. package/dist/components/system/system.d.ts +0 -40
  402. package/dist/components/system/system.d.ts.map +0 -1
  403. package/dist/components/system/system.js +0 -283
  404. package/dist/components/system/system.js.map +0 -1
  405. package/dist/components/system/system.repository.d.ts +0 -6
  406. package/dist/components/system/system.repository.d.ts.map +0 -1
  407. package/dist/components/system/system.repository.js +0 -15
  408. package/dist/components/system/system.repository.js.map +0 -1
  409. package/dist/components/system-privilege/index.d.ts +0 -4
  410. package/dist/components/system-privilege/index.d.ts.map +0 -1
  411. package/dist/components/system-privilege/index.js +0 -8
  412. package/dist/components/system-privilege/index.js.map +0 -1
  413. package/dist/components/system-privilege/system-privilege.d.ts +0 -53
  414. package/dist/components/system-privilege/system-privilege.d.ts.map +0 -1
  415. package/dist/components/system-privilege/system-privilege.js +0 -315
  416. package/dist/components/system-privilege/system-privilege.js.map +0 -1
  417. package/dist/components/system-privilege/system-privilege.repository.d.ts +0 -7
  418. package/dist/components/system-privilege/system-privilege.repository.d.ts.map +0 -1
  419. package/dist/components/system-privilege/system-privilege.repository.js +0 -21
  420. package/dist/components/system-privilege/system-privilege.repository.js.map +0 -1
  421. package/dist/components/user-group/index.d.ts +0 -3
  422. package/dist/components/user-group/index.d.ts.map +0 -1
  423. package/dist/components/user-group/index.js +0 -19
  424. package/dist/components/user-group/index.js.map +0 -1
  425. package/dist/components/user-group/user-group.d.ts +0 -51
  426. package/dist/components/user-group/user-group.d.ts.map +0 -1
  427. package/dist/components/user-group/user-group.js +0 -335
  428. package/dist/components/user-group/user-group.js.map +0 -1
  429. package/dist/components/user-group/user-group.repository.d.ts +0 -6
  430. package/dist/components/user-group/user-group.repository.d.ts.map +0 -1
  431. package/dist/components/user-group/user-group.repository.js +0 -15
  432. package/dist/components/user-group/user-group.repository.js.map +0 -1
  433. package/dist/components/user-object-privilege/index.d.ts +0 -3
  434. package/dist/components/user-object-privilege/index.d.ts.map +0 -1
  435. package/dist/components/user-object-privilege/index.js +0 -19
  436. package/dist/components/user-object-privilege/index.js.map +0 -1
  437. package/dist/components/user-object-privilege/user-object-privilege.d.ts +0 -24
  438. package/dist/components/user-object-privilege/user-object-privilege.d.ts.map +0 -1
  439. package/dist/components/user-object-privilege/user-object-privilege.js +0 -59
  440. package/dist/components/user-object-privilege/user-object-privilege.js.map +0 -1
  441. package/dist/components/user-object-privilege/user-object-privilege.repository.d.ts +0 -6
  442. package/dist/components/user-object-privilege/user-object-privilege.repository.d.ts.map +0 -1
  443. package/dist/components/user-object-privilege/user-object-privilege.repository.js +0 -15
  444. package/dist/components/user-object-privilege/user-object-privilege.repository.js.map +0 -1
  445. package/dist/components/user-privilege/index.d.ts +0 -3
  446. package/dist/components/user-privilege/index.d.ts.map +0 -1
  447. package/dist/components/user-privilege/index.js +0 -19
  448. package/dist/components/user-privilege/index.js.map +0 -1
  449. package/dist/components/user-privilege/user-privilege.d.ts +0 -71
  450. package/dist/components/user-privilege/user-privilege.d.ts.map +0 -1
  451. package/dist/components/user-privilege/user-privilege.js +0 -388
  452. package/dist/components/user-privilege/user-privilege.js.map +0 -1
  453. package/dist/components/user-privilege/user-privilege.repository.d.ts +0 -7
  454. package/dist/components/user-privilege/user-privilege.repository.d.ts.map +0 -1
  455. package/dist/components/user-privilege/user-privilege.repository.js +0 -29
  456. package/dist/components/user-privilege/user-privilege.repository.js.map +0 -1
  457. package/dist/components/user-system-access/index.d.ts +0 -3
  458. package/dist/components/user-system-access/index.d.ts.map +0 -1
  459. package/dist/components/user-system-access/index.js +0 -19
  460. package/dist/components/user-system-access/index.js.map +0 -1
  461. package/dist/components/user-system-access/user-system-access.d.ts +0 -69
  462. package/dist/components/user-system-access/user-system-access.d.ts.map +0 -1
  463. package/dist/components/user-system-access/user-system-access.js +0 -413
  464. package/dist/components/user-system-access/user-system-access.js.map +0 -1
  465. package/dist/components/user-system-access/user-system-access.repository.d.ts +0 -8
  466. package/dist/components/user-system-access/user-system-access.repository.d.ts.map +0 -1
  467. package/dist/components/user-system-access/user-system-access.repository.js +0 -44
  468. package/dist/components/user-system-access/user-system-access.repository.js.map +0 -1
  469. package/dist/database.d.ts +0 -5
  470. package/dist/database.d.ts.map +0 -1
  471. package/dist/database.js +0 -14
  472. package/dist/database.js.map +0 -1
  473. package/dist/enum/api-key.enum.d.ts +0 -6
  474. package/dist/enum/api-key.enum.d.ts.map +0 -1
  475. package/dist/enum/api-key.enum.js +0 -10
  476. package/dist/enum/api-key.enum.js.map +0 -1
  477. package/dist/enum/group-type.enum.d.ts +0 -9
  478. package/dist/enum/group-type.enum.d.ts.map +0 -1
  479. package/dist/enum/group-type.enum.js +0 -13
  480. package/dist/enum/group-type.enum.js.map +0 -1
  481. package/dist/enum/index.d.ts +0 -7
  482. package/dist/enum/index.d.ts.map +0 -1
  483. package/dist/enum/index.js +0 -23
  484. package/dist/enum/index.js.map +0 -1
  485. package/dist/enum/login-status.enum.d.ts +0 -5
  486. package/dist/enum/login-status.enum.d.ts.map +0 -1
  487. package/dist/enum/login-status.enum.js +0 -9
  488. package/dist/enum/login-status.enum.js.map +0 -1
  489. package/dist/enum/object-status.enum.d.ts +0 -5
  490. package/dist/enum/object-status.enum.d.ts.map +0 -1
  491. package/dist/enum/object-status.enum.js +0 -9
  492. package/dist/enum/object-status.enum.js.map +0 -1
  493. package/dist/enum/user-status.enum.d.ts +0 -8
  494. package/dist/enum/user-status.enum.d.ts.map +0 -1
  495. package/dist/enum/user-status.enum.js +0 -12
  496. package/dist/enum/user-status.enum.js.map +0 -1
  497. package/dist/enum/yn.enum.d.ts +0 -5
  498. package/dist/enum/yn.enum.d.ts.map +0 -1
  499. package/dist/enum/yn.enum.js +0 -9
  500. package/dist/enum/yn.enum.js.map +0 -1
  501. package/dist/index.d.ts.map +0 -1
  502. package/dist/interfaces/api-key-attr.interface.d.ts +0 -16
  503. package/dist/interfaces/api-key-attr.interface.d.ts.map +0 -1
  504. package/dist/interfaces/api-key-attr.interface.js +0 -3
  505. package/dist/interfaces/api-key-attr.interface.js.map +0 -1
  506. package/dist/interfaces/group-object-privilege.interface.d.ts +0 -14
  507. package/dist/interfaces/group-object-privilege.interface.d.ts.map +0 -1
  508. package/dist/interfaces/group-object-privilege.interface.js +0 -3
  509. package/dist/interfaces/group-object-privilege.interface.js.map +0 -1
  510. package/dist/interfaces/group-privilege.interface.d.ts +0 -11
  511. package/dist/interfaces/group-privilege.interface.d.ts.map +0 -1
  512. package/dist/interfaces/group-privilege.interface.js +0 -3
  513. package/dist/interfaces/group-privilege.interface.js.map +0 -1
  514. package/dist/interfaces/group-reporting-user.interface.d.ts +0 -12
  515. package/dist/interfaces/group-reporting-user.interface.d.ts.map +0 -1
  516. package/dist/interfaces/group-reporting-user.interface.js +0 -3
  517. package/dist/interfaces/group-reporting-user.interface.js.map +0 -1
  518. package/dist/interfaces/group-search-attr.interface.d.ts +0 -9
  519. package/dist/interfaces/group-search-attr.interface.d.ts.map +0 -1
  520. package/dist/interfaces/group-search-attr.interface.js +0 -3
  521. package/dist/interfaces/group-search-attr.interface.js.map +0 -1
  522. package/dist/interfaces/group-system-access.interface.d.ts +0 -11
  523. package/dist/interfaces/group-system-access.interface.d.ts.map +0 -1
  524. package/dist/interfaces/group-system-access.interface.js +0 -3
  525. package/dist/interfaces/group-system-access.interface.js.map +0 -1
  526. package/dist/interfaces/group.interface.d.ts +0 -17
  527. package/dist/interfaces/group.interface.d.ts.map +0 -1
  528. package/dist/interfaces/group.interface.js +0 -3
  529. package/dist/interfaces/group.interface.js.map +0 -1
  530. package/dist/interfaces/index.d.ts +0 -14
  531. package/dist/interfaces/index.d.ts.map +0 -1
  532. package/dist/interfaces/index.js +0 -30
  533. package/dist/interfaces/index.js.map +0 -1
  534. package/dist/interfaces/system-login.interface.d.ts +0 -7
  535. package/dist/interfaces/system-login.interface.d.ts.map +0 -1
  536. package/dist/interfaces/system-login.interface.js +0 -3
  537. package/dist/interfaces/system-login.interface.js.map +0 -1
  538. package/dist/interfaces/system-privilege-search.interface.d.ts +0 -6
  539. package/dist/interfaces/system-privilege-search.interface.d.ts.map +0 -1
  540. package/dist/interfaces/system-privilege-search.interface.js +0 -3
  541. package/dist/interfaces/system-privilege-search.interface.js.map +0 -1
  542. package/dist/interfaces/system-privilege.interface.d.ts +0 -12
  543. package/dist/interfaces/system-privilege.interface.d.ts.map +0 -1
  544. package/dist/interfaces/system-privilege.interface.js +0 -3
  545. package/dist/interfaces/system-privilege.interface.js.map +0 -1
  546. package/dist/interfaces/system-search-attr.interface.d.ts +0 -6
  547. package/dist/interfaces/system-search-attr.interface.d.ts.map +0 -1
  548. package/dist/interfaces/system-search-attr.interface.js +0 -3
  549. package/dist/interfaces/system-search-attr.interface.js.map +0 -1
  550. package/dist/interfaces/system.interface.d.ts +0 -16
  551. package/dist/interfaces/system.interface.d.ts.map +0 -1
  552. package/dist/interfaces/system.interface.js +0 -3
  553. package/dist/interfaces/system.interface.js.map +0 -1
  554. package/dist/interfaces/user-group.interface.d.ts +0 -13
  555. package/dist/interfaces/user-group.interface.d.ts.map +0 -1
  556. package/dist/interfaces/user-group.interface.js +0 -3
  557. package/dist/interfaces/user-group.interface.js.map +0 -1
  558. package/dist/interfaces/user-object-privilege.interface.d.ts +0 -14
  559. package/dist/interfaces/user-object-privilege.interface.d.ts.map +0 -1
  560. package/dist/interfaces/user-object-privilege.interface.js +0 -3
  561. package/dist/interfaces/user-object-privilege.interface.js.map +0 -1
  562. package/dist/interfaces/user-privilege.interface.d.ts +0 -11
  563. package/dist/interfaces/user-privilege.interface.d.ts.map +0 -1
  564. package/dist/interfaces/user-privilege.interface.js +0 -3
  565. package/dist/interfaces/user-privilege.interface.js.map +0 -1
  566. package/dist/interfaces/user-session.interface.d.ts +0 -5
  567. package/dist/interfaces/user-session.interface.d.ts.map +0 -1
  568. package/dist/interfaces/user-session.interface.js +0 -3
  569. package/dist/interfaces/user-session.interface.js.map +0 -1
  570. package/dist/interfaces/user-system-access.interface.d.ts +0 -11
  571. package/dist/interfaces/user-system-access.interface.d.ts.map +0 -1
  572. package/dist/interfaces/user-system-access.interface.js +0 -3
  573. package/dist/interfaces/user-system-access.interface.js.map +0 -1
  574. package/dist/models/api-key-entity.d.ts +0 -22
  575. package/dist/models/api-key-entity.d.ts.map +0 -1
  576. package/dist/models/api-key-entity.js +0 -125
  577. package/dist/models/api-key-entity.js.map +0 -1
  578. package/dist/models/building.entity.d.ts +0 -30
  579. package/dist/models/building.entity.d.ts.map +0 -1
  580. package/dist/models/building.entity.js +0 -216
  581. package/dist/models/building.entity.js.map +0 -1
  582. package/dist/models/group-object-privilege.entity.d.ts +0 -22
  583. package/dist/models/group-object-privilege.entity.d.ts.map +0 -1
  584. package/dist/models/group-object-privilege.entity.js +0 -114
  585. package/dist/models/group-object-privilege.entity.js.map +0 -1
  586. package/dist/models/group-privilege.entity.d.ts +0 -19
  587. package/dist/models/group-privilege.entity.d.ts.map +0 -1
  588. package/dist/models/group-privilege.entity.js +0 -99
  589. package/dist/models/group-privilege.entity.js.map +0 -1
  590. package/dist/models/group-reporting-user.entity.d.ts +0 -18
  591. package/dist/models/group-reporting-user.entity.d.ts.map +0 -1
  592. package/dist/models/group-reporting-user.entity.js +0 -117
  593. package/dist/models/group-reporting-user.entity.js.map +0 -1
  594. package/dist/models/group-system-access.entity.d.ts +0 -19
  595. package/dist/models/group-system-access.entity.d.ts.map +0 -1
  596. package/dist/models/group-system-access.entity.js +0 -102
  597. package/dist/models/group-system-access.entity.js.map +0 -1
  598. package/dist/models/group.entity.d.ts +0 -33
  599. package/dist/models/group.entity.d.ts.map +0 -1
  600. package/dist/models/group.entity.js +0 -157
  601. package/dist/models/group.entity.js.map +0 -1
  602. package/dist/models/login-history.entity.d.ts +0 -15
  603. package/dist/models/login-history.entity.d.ts.map +0 -1
  604. package/dist/models/login-history.entity.js +0 -81
  605. package/dist/models/login-history.entity.js.map +0 -1
  606. package/dist/models/staff.entity.d.ts +0 -19
  607. package/dist/models/staff.entity.d.ts.map +0 -1
  608. package/dist/models/staff.entity.js +0 -113
  609. package/dist/models/staff.entity.js.map +0 -1
  610. package/dist/models/system-privilege.entity.d.ts +0 -19
  611. package/dist/models/system-privilege.entity.d.ts.map +0 -1
  612. package/dist/models/system-privilege.entity.js +0 -111
  613. package/dist/models/system-privilege.entity.js.map +0 -1
  614. package/dist/models/system.entity.d.ts +0 -26
  615. package/dist/models/system.entity.d.ts.map +0 -1
  616. package/dist/models/system.entity.js +0 -139
  617. package/dist/models/system.entity.js.map +0 -1
  618. package/dist/models/user-group.entity.d.ts +0 -20
  619. package/dist/models/user-group.entity.d.ts.map +0 -1
  620. package/dist/models/user-group.entity.js +0 -114
  621. package/dist/models/user-group.entity.js.map +0 -1
  622. package/dist/models/user-object-privilege.entity.d.ts +0 -21
  623. package/dist/models/user-object-privilege.entity.d.ts.map +0 -1
  624. package/dist/models/user-object-privilege.entity.js +0 -113
  625. package/dist/models/user-object-privilege.entity.js.map +0 -1
  626. package/dist/models/user-privilege.entity.d.ts +0 -18
  627. package/dist/models/user-privilege.entity.d.ts.map +0 -1
  628. package/dist/models/user-privilege.entity.js +0 -99
  629. package/dist/models/user-privilege.entity.js.map +0 -1
  630. package/dist/models/user-system-access.entity.d.ts +0 -18
  631. package/dist/models/user-system-access.entity.d.ts.map +0 -1
  632. package/dist/models/user-system-access.entity.js +0 -108
  633. package/dist/models/user-system-access.entity.js.map +0 -1
  634. package/dist/models/user.entity.d.ts +0 -41
  635. package/dist/models/user.entity.d.ts.map +0 -1
  636. package/dist/models/user.entity.js +0 -218
  637. package/dist/models/user.entity.js.map +0 -1
  638. package/dist/redis-client/__mocks__/jest-initial-setup.d.ts +0 -2
  639. package/dist/redis-client/__mocks__/jest-initial-setup.d.ts.map +0 -1
  640. package/dist/redis-client/__mocks__/jest-initial-setup.js +0 -8
  641. package/dist/redis-client/__mocks__/jest-initial-setup.js.map +0 -1
  642. package/dist/redis-client/__mocks__/redis-mock.d.ts +0 -3
  643. package/dist/redis-client/__mocks__/redis-mock.d.ts.map +0 -1
  644. package/dist/redis-client/__mocks__/redis-mock.js +0 -56
  645. package/dist/redis-client/__mocks__/redis-mock.js.map +0 -1
  646. package/dist/redis-client/index.d.ts +0 -2
  647. package/dist/redis-client/index.d.ts.map +0 -1
  648. package/dist/redis-client/index.js +0 -18
  649. package/dist/redis-client/index.js.map +0 -1
  650. package/dist/redis-client/redis.service.d.ts +0 -10
  651. package/dist/redis-client/redis.service.d.ts.map +0 -1
  652. package/dist/redis-client/redis.service.js +0 -69
  653. package/dist/redis-client/redis.service.js.map +0 -1
  654. package/dist/session/index.d.ts +0 -3
  655. package/dist/session/index.d.ts.map +0 -1
  656. package/dist/session/index.js +0 -19
  657. package/dist/session/index.js.map +0 -1
  658. package/dist/session/interfaces/index.d.ts +0 -2
  659. package/dist/session/interfaces/index.d.ts.map +0 -1
  660. package/dist/session/interfaces/index.js +0 -18
  661. package/dist/session/interfaces/index.js.map +0 -1
  662. package/dist/session/interfaces/session-service.interface.d.ts +0 -10
  663. package/dist/session/interfaces/session-service.interface.d.ts.map +0 -1
  664. package/dist/session/interfaces/session-service.interface.js +0 -3
  665. package/dist/session/interfaces/session-service.interface.js.map +0 -1
  666. package/dist/session/session.service.d.ts +0 -14
  667. package/dist/session/session.service.d.ts.map +0 -1
  668. package/dist/session/session.service.js +0 -73
  669. package/dist/session/session.service.js.map +0 -1
  670. package/dist/types/auth-context.d.ts +0 -7
  671. package/dist/types/auth-context.d.ts.map +0 -1
  672. package/dist/types/auth-context.js +0 -3
  673. package/dist/types/auth-context.js.map +0 -1
  674. package/dist/types/index.d.ts +0 -2
  675. package/dist/types/index.d.ts.map +0 -1
  676. package/dist/types/index.js +0 -18
  677. package/dist/types/index.js.map +0 -1
@@ -1,448 +1,448 @@
1
- import { ClassError, ObjectBase } from '@tomei/general';
2
- import { APIKeyStatusEnum } from '../../enum/api-key.enum';
3
- import { APIKeyRepository } from './api-key.repository';
4
- import { IAPIKeyAttr } from '../../interfaces/api-key-attr.interface';
5
- import { LoginUser } from '../login-user/login-user';
6
- import { ApplicationConfig } from '@tomei/config';
7
- import { randomBytes } from 'crypto';
8
- import { ActionEnum, Activity } from '@tomei/activity-history';
9
- import { Op } from 'sequelize';
10
- import { System } from '../system/system';
11
-
12
- export class APIKey extends ObjectBase {
13
- ObjectId: string;
14
- ObjectName: string;
15
- ObjectType: 'ApiKey';
16
- TableName: 'sso_APIKey';
17
-
18
- ApiKey: string;
19
- Name: string;
20
- SystemCode: string;
21
- Description: string;
22
- Status: APIKeyStatusEnum;
23
- ExpirationDate: Date;
24
- RevokedReason: string;
25
- _RevokedById: number;
26
- _RevokedAt: Date;
27
- _CreatedAt: Date;
28
- _CreatedById: number;
29
-
30
- get APIKeyId(): number {
31
- return parseInt(this.ObjectId);
32
- }
33
-
34
- set APIKeyId(value: number) {
35
- this.ObjectId = value.toString();
36
- }
37
-
38
- get RevokedById(): number {
39
- return this._RevokedById;
40
- }
41
-
42
- get RevokedAt(): Date {
43
- return this._RevokedAt;
44
- }
45
-
46
- get CreatedAt(): Date {
47
- return this._CreatedAt;
48
- }
49
-
50
- get CreatedById(): number {
51
- return this._CreatedById;
52
- }
53
-
54
- protected static _Repo = new APIKeyRepository();
55
-
56
- protected constructor(apiKeyAttr?: IAPIKeyAttr) {
57
- super();
58
- if (apiKeyAttr) {
59
- this.APIKeyId = apiKeyAttr.APIKeyId;
60
- this.ApiKey = apiKeyAttr.ApiKey;
61
- this.Name = apiKeyAttr.Name;
62
- this.SystemCode = apiKeyAttr.SystemCode;
63
- this.Description = apiKeyAttr.Description;
64
- this.Status = apiKeyAttr.Status;
65
- this.ExpirationDate = apiKeyAttr.ExpirationDate;
66
- this._RevokedById = apiKeyAttr.RevokedById;
67
- this._RevokedAt = apiKeyAttr.RevokedAt;
68
- this._CreatedAt = apiKeyAttr.CreatedAt;
69
- this._CreatedById = apiKeyAttr.CreatedById;
70
- }
71
- }
72
-
73
- public static async init(ApiKeyId?: number, dbTransaction?: any) {
74
- try {
75
- if (ApiKeyId) {
76
- const apiKeyAttr = await this._Repo.findByPk(
77
- ApiKeyId.toString(),
78
- dbTransaction,
79
- );
80
- if (apiKeyAttr) {
81
- return new APIKey(apiKeyAttr);
82
- } else {
83
- throw new ClassError(
84
- 'APIKey',
85
- 'APIKeyErrMsgO1',
86
- 'APIKey not found',
87
- 'init',
88
- );
89
- }
90
- }
91
- return new APIKey();
92
- } catch (error) {
93
- throw error;
94
- }
95
- }
96
-
97
- async generate(loginUser: LoginUser, dbTransaction?: any) {
98
- //This method generates a new API key and saves it into the database.
99
- try {
100
- // Part 2: Privilege Checking
101
- // Call loginUser.checkPrivileges() method by passing:
102
- // SystemCode: <get_from_app_config>
103
- // PrivilegeCode: "API_KEY_CREATE"
104
- const systemCode =
105
- ApplicationConfig.getComponentConfigValue('system-code');
106
- const isPrivileged = await loginUser.checkPrivileges(
107
- systemCode,
108
- 'API_KEY_CREATE',
109
- );
110
-
111
- if (!isPrivileged) {
112
- throw new ClassError(
113
- 'APIKey',
114
- 'APIKeyErrMsgO2',
115
- 'User does not have privilege to generate API key.',
116
- 'generate',
117
- );
118
- }
119
-
120
- // Part 3: System Existence Check
121
- // Call System.init(dbTransaction, this.SystemCode) to verify the System exists.
122
- // If the group does not exist, throw a NotFoundError.
123
-
124
- await System.init(dbTransaction, this.SystemCode);
125
-
126
- // Part 3: Generate API Key
127
- // Populate the following attributes:
128
- // CreatedById: Set to loginUser.UserId.
129
- this._CreatedById = loginUser.UserId;
130
- // CreatedAt: Set to current date time.
131
- this._CreatedAt = new Date();
132
- // Generate a unique API key string:
133
- // Use a secure random function or crypto module to generate a 64-character hexadecimal string.
134
- // Assign the generated string to this.ApiKey.
135
- this.ApiKey = randomBytes(64).toString('hex');
136
-
137
- // Part 4: Save API Key to Database
138
- // Call APIKey._Repo.create() by passing:
139
- // loginUser
140
- // dbTransaction
141
- // This APIKey instance.
142
- const EntityValueAfter: any = {
143
- ApiKey: this.ApiKey,
144
- Name: this.Name,
145
- SystemCode: this.SystemCode,
146
- Status: this.Status,
147
- Description: this.Description,
148
- ExpirationDate: this.ExpirationDate,
149
- CreatedAt: this.CreatedAt,
150
- CreatedById: this.CreatedById,
151
- RevokedAt: this.RevokedAt,
152
- RevokedById: this.RevokedById,
153
- RevokedReason: this.RevokedReason,
154
- };
155
-
156
- const data = await APIKey._Repo.create(EntityValueAfter, {
157
- transaction: dbTransaction,
158
- });
159
- this.APIKeyId = data.APIKeyId;
160
- EntityValueAfter.ApiKeyId = data.APIKeyId;
161
-
162
- // Part 5: Record Generate API Key Activity
163
- // Initialise EntityValueBefore variable and set to empty object.
164
- const EntityValueBefore = {};
165
- // Initialise EntityValueAfter variable and set to this APIKey instance.
166
- // Instantiate new activity from Activity class, call createId() method, then set:
167
- const activity = new Activity();
168
- activity.ActivityId = activity.createId();
169
- // Action: ActionEnum.Create
170
- // Description: "Generate API key."
171
- // EntityType: "APIKey"
172
- // EntityId: <this.APIKeyId>
173
- // EntityValueBefore: EntityValueBefore
174
- // EntityValueAfter: EntityValueAfter
175
- activity.Action = ActionEnum.CREATE;
176
- activity.Description = 'Generate API key.';
177
- activity.EntityType = 'APIKey';
178
- activity.EntityId = this.ObjectId;
179
- activity.EntityValueBefore = JSON.stringify(EntityValueBefore);
180
- activity.EntityValueAfter = JSON.stringify(EntityValueAfter);
181
- // Call new activity create method by passing:
182
- // dbTransaction
183
- // userId: loginUser.ObjectId
184
- await activity.create(loginUser.ObjectId, dbTransaction);
185
-
186
- // Part 6: Returns
187
- // Translate the created APIKey entity into an object and return the following fields:
188
- // ApiKey
189
- // Name
190
- // Status
191
- // ExpirationDate
192
- // CreatedAt
193
- // CreatedById
194
- // InvokedAt
195
- // InvokedById
196
- return {
197
- ApiKey: this.ApiKey,
198
- Name: this.Name,
199
- Status: this.Status,
200
- Description: this.Description,
201
- SystemCode: this.SystemCode,
202
- ExpirationDate: this.ExpirationDate,
203
- CreatedAt: this.CreatedAt,
204
- CreatedById: this.CreatedById,
205
- RevokedAt: this.RevokedAt,
206
- RevokedById: this.RevokedById,
207
- RevokedReason: this.RevokedReason,
208
- };
209
- } catch (error) {
210
- throw error;
211
- }
212
- }
213
-
214
- public static async findAll(
215
- pagination: { page: number; limit: number },
216
- loginUser: LoginUser,
217
- dbTransaction: any,
218
- whereOptions: {
219
- SystemCode?: string;
220
- Status?: APIKeyStatusEnum;
221
- ExpirationDate?: {
222
- FromDate: Date;
223
- ToDate: Date;
224
- };
225
- CreatedById?: number;
226
- },
227
- sortOptions?: {
228
- SortBy: string;
229
- SortOrder: 'ASC' | 'DESC';
230
- },
231
- ) {
232
- try {
233
- // Part 1: Privilege Checking
234
- // Call the loginUser.checkPrivileges() method by passing:
235
- // SystemCode: Retrieved from the application configuration.
236
- // PrivilegeCode: 'API_KEY_VIEW'.
237
- // Ensure the user has the necessary privileges to view API keys.
238
- const systemCode =
239
- ApplicationConfig.getComponentConfigValue('system-code');
240
- const isPrivileged = await loginUser.checkPrivileges(
241
- systemCode,
242
- 'API_KEY_VIEW',
243
- );
244
-
245
- if (!isPrivileged) {
246
- throw new ClassError(
247
- 'APIKey',
248
- 'APIKeyErrMsgO2',
249
- 'User does not have privilege to generate API key.',
250
- 'generate',
251
- );
252
- }
253
-
254
- // Part 2: Prepare Filters
255
- // Ensure that whereOptions includes the necessary filters such as:
256
- // Status: Filter for specific API key statuses (e.g., "Active", "Revoked").
257
- // ExpirationDate: Filter for expiration date ranges (e.g., { [Op.between]: [fromDate, toDate] }).
258
- // CreatedById: Filter by the user who created the API key.
259
- const where = {};
260
- if (whereOptions) {
261
- if (whereOptions.SystemCode) {
262
- where['SystemCode'] = whereOptions.SystemCode;
263
- }
264
- if (whereOptions.Status) {
265
- where['Status'] = whereOptions.Status;
266
- }
267
- if (whereOptions.ExpirationDate) {
268
- where['ExpirationDate'] = {
269
- [Op.between]: [
270
- whereOptions.ExpirationDate.FromDate,
271
- whereOptions.ExpirationDate.ToDate,
272
- ],
273
- };
274
- }
275
- if (whereOptions.CreatedById) {
276
- where['CreatedById'] = whereOptions.CreatedById;
277
- }
278
- }
279
-
280
- const order = [];
281
- if (sortOptions) {
282
- // Sort the results based on the provided SortBy and SortOrder.
283
- // Ensure that the SortBy field is valid and that the SortOrder is either "ASC" or "DESC".
284
- if (sortOptions.SortBy) {
285
- order.push([sortOptions.SortBy, sortOptions.SortOrder]);
286
- }
287
- } else {
288
- order.push(['CreatedAt', 'DESC']);
289
- }
290
-
291
- let offset = 0;
292
- if (pagination) {
293
- offset = (pagination.page - 1) * pagination.limit;
294
- }
295
-
296
- // Ensure that the pagination object includes the page and limit values.
297
- // Use Sequelize's findAll() method with the provided whereOptions, sortOptions, and pagination to retrieve matching API keys.
298
- const data = await APIKey._Repo.findAllWithPagination({
299
- where,
300
- order,
301
- offset,
302
- limit: pagination.limit,
303
- transaction: dbTransaction,
304
- distinct: true,
305
- });
306
-
307
- // Return the list of API keys including:
308
- // ApiKeyId
309
- // ApiKey
310
- // Name
311
- // Status
312
- // ExpirationDate
313
- // CreatedAt
314
- // CreatedById
315
- // RevokedAt
316
- // RevokedById
317
- // RevokedReason
318
- // Include pagination information such as:
319
- // total: Total number of records,
320
- // page: Current page,
321
- // limit: Number of records per page.
322
-
323
- return {
324
- total: data.count,
325
- ApiKeys: data.rows.map((row) => {
326
- return {
327
- ApiKeyId: row.APIKeyId,
328
- ApiKey: row.ApiKey,
329
- Name: row.Name,
330
- SystemCode: row.SystemCode,
331
- Description: row.Description,
332
- Status: row.Status,
333
- ExpirationDate: row.ExpirationDate,
334
- CreatedAt: row.CreatedAt,
335
- CreatedById: row.CreatedById,
336
- RevokedAt: row.RevokedAt,
337
- RevokedById: row.RevokedById,
338
- RevokedReason: row.RevokedReason,
339
- };
340
- }),
341
- page: pagination.page,
342
- limit: pagination.limit,
343
- };
344
- } catch (error) {
345
- throw error;
346
- }
347
- }
348
-
349
- public async revoke(
350
- apiKey: string,
351
- loginUser: LoginUser,
352
- dbTransaction: any,
353
- reason?: string,
354
- ) {
355
- try {
356
- // Part 1: Prepare Required Params
357
- // Ensure apiKey, loginUser, and dbTransaction are provided.
358
- // Retrieve the existing API key record from the database using the provided apiKey.
359
- const apiKeyRecord = await APIKey._Repo.findOne({
360
- where: { ApiKey: apiKey },
361
- transaction: dbTransaction,
362
- });
363
- if (!apiKeyRecord) {
364
- throw new ClassError(
365
- 'APIKey',
366
- 'APIKeyErrMsgO3',
367
- 'API key not found.',
368
- 'revoke',
369
- );
370
- }
371
- const EntityValueBefore = {
372
- ...apiKeyRecord.get({ plain: true }),
373
- };
374
-
375
- // Part 2: Revoke API Key
376
- // Mark the API key as revoked:
377
- // Set the Status to "Revoked".
378
- apiKeyRecord.Status = APIKeyStatusEnum.REVOKED;
379
- // Set the RevokedAt timestamp to the current date and time.\
380
- apiKeyRecord.RevokedAt = new Date();
381
- // Set the RevokedById to loginUser.UserId.
382
- apiKeyRecord.RevokedById = loginUser.UserId;
383
- // Optionally, set the revocation reason:
384
- // If the reason parameter is provided, store it in the RevokedReason attribute.
385
- if (reason) {
386
- apiKeyRecord.RevokedReason = reason;
387
- }
388
-
389
- // Part 3: Save API Key to Database
390
- // Call APIKey._Repo.update() by passing:
391
- // The updated APIKey instance
392
- // dbTransaction.
393
- await APIKey._Repo.update(
394
- {
395
- ...apiKeyRecord.get({ plain: true }),
396
- },
397
- {
398
- where: { APIKeyId: apiKeyRecord.APIKeyId },
399
- transaction: dbTransaction,
400
- },
401
- );
402
-
403
- // Part 4: Record Update API Key Activity
404
- // Initialise EntityValueBefore variable and set to empty object.
405
- // Initialise EntityValueAfter variable and set to this APIKey instance.
406
- const EntityValueAfter = {
407
- ...apiKeyRecord.get({ plain: true }),
408
- };
409
- // Instantiate new activity from Activity class, call createId() method, then set:
410
- // Action: ActionEnum.Create
411
- // Description: "Revoke API key."
412
- // EntityType: "APIKey"
413
- // EntityId: <this.APIKeyId>
414
- // EntityValueBefore: EntityValueBefore
415
- // EntityValueAfter: EntityValueAfter
416
- const activity = new Activity();
417
- activity.ActivityId = activity.createId();
418
- activity.Action = ActionEnum.UPDATE;
419
- activity.Description = 'Revoke API key.';
420
- activity.EntityType = 'APIKey';
421
- activity.EntityId = apiKeyRecord.APIKeyId.toString();
422
- activity.EntityValueBefore = JSON.stringify(EntityValueBefore);
423
- activity.EntityValueAfter = JSON.stringify(EntityValueAfter);
424
- // Call new activity create method by passing:
425
- // dbTransaction
426
- // userId: loginUser.ObjectId
427
- await activity.create(loginUser.ObjectId, dbTransaction);
428
-
429
- // Part 5: Returns
430
- // Translate the updated APIKey entity into an object and return the following fields:
431
- // ApiKey
432
- // Status: "Revoked"
433
- // RevokedAt
434
- // RevokedById
435
- // RevokedByName
436
- // RevokedReason
437
- return {
438
- ApiKey: apiKeyRecord.ApiKey,
439
- Status: apiKeyRecord.Status,
440
- RevokedAt: apiKeyRecord.RevokedAt,
441
- RevokedById: apiKeyRecord.RevokedById,
442
- RevokedReason: apiKeyRecord.RevokedReason,
443
- };
444
- } catch (error) {
445
- throw error;
446
- }
447
- }
448
- }
1
+ import { ClassError, ObjectBase } from '@tomei/general';
2
+ import { APIKeyStatusEnum } from '../../enum/api-key.enum';
3
+ import { APIKeyRepository } from './api-key.repository';
4
+ import { IAPIKeyAttr } from '../../interfaces/api-key-attr.interface';
5
+ import { LoginUser } from '../login-user/login-user';
6
+ import { ApplicationConfig } from '@tomei/config';
7
+ import { randomBytes } from 'crypto';
8
+ import { ActionEnum, Activity } from '@tomei/activity-history';
9
+ import { Op } from 'sequelize';
10
+ import { System } from '../system/system';
11
+
12
+ export class APIKey extends ObjectBase {
13
+ ObjectId: string;
14
+ ObjectName: string;
15
+ ObjectType: 'ApiKey';
16
+ TableName: 'sso_APIKey';
17
+
18
+ ApiKey: string;
19
+ Name: string;
20
+ SystemCode: string;
21
+ Description: string;
22
+ Status: APIKeyStatusEnum;
23
+ ExpirationDate: Date;
24
+ RevokedReason: string;
25
+ _RevokedById: number;
26
+ _RevokedAt: Date;
27
+ _CreatedAt: Date;
28
+ _CreatedById: number;
29
+
30
+ get APIKeyId(): number {
31
+ return parseInt(this.ObjectId);
32
+ }
33
+
34
+ set APIKeyId(value: number) {
35
+ this.ObjectId = value.toString();
36
+ }
37
+
38
+ get RevokedById(): number {
39
+ return this._RevokedById;
40
+ }
41
+
42
+ get RevokedAt(): Date {
43
+ return this._RevokedAt;
44
+ }
45
+
46
+ get CreatedAt(): Date {
47
+ return this._CreatedAt;
48
+ }
49
+
50
+ get CreatedById(): number {
51
+ return this._CreatedById;
52
+ }
53
+
54
+ protected static _Repo = new APIKeyRepository();
55
+
56
+ protected constructor(apiKeyAttr?: IAPIKeyAttr) {
57
+ super();
58
+ if (apiKeyAttr) {
59
+ this.APIKeyId = apiKeyAttr.APIKeyId;
60
+ this.ApiKey = apiKeyAttr.ApiKey;
61
+ this.Name = apiKeyAttr.Name;
62
+ this.SystemCode = apiKeyAttr.SystemCode;
63
+ this.Description = apiKeyAttr.Description;
64
+ this.Status = apiKeyAttr.Status;
65
+ this.ExpirationDate = apiKeyAttr.ExpirationDate;
66
+ this._RevokedById = apiKeyAttr.RevokedById;
67
+ this._RevokedAt = apiKeyAttr.RevokedAt;
68
+ this._CreatedAt = apiKeyAttr.CreatedAt;
69
+ this._CreatedById = apiKeyAttr.CreatedById;
70
+ }
71
+ }
72
+
73
+ public static async init(ApiKeyId?: number, dbTransaction?: any) {
74
+ try {
75
+ if (ApiKeyId) {
76
+ const apiKeyAttr = await this._Repo.findByPk(
77
+ ApiKeyId.toString(),
78
+ dbTransaction,
79
+ );
80
+ if (apiKeyAttr) {
81
+ return new APIKey(apiKeyAttr);
82
+ } else {
83
+ throw new ClassError(
84
+ 'APIKey',
85
+ 'APIKeyErrMsgO1',
86
+ 'APIKey not found',
87
+ 'init',
88
+ );
89
+ }
90
+ }
91
+ return new APIKey();
92
+ } catch (error) {
93
+ throw error;
94
+ }
95
+ }
96
+
97
+ async generate(loginUser: LoginUser, dbTransaction?: any) {
98
+ //This method generates a new API key and saves it into the database.
99
+ try {
100
+ // Part 2: Privilege Checking
101
+ // Call loginUser.checkPrivileges() method by passing:
102
+ // SystemCode: <get_from_app_config>
103
+ // PrivilegeCode: "API_KEY_CREATE"
104
+ const systemCode =
105
+ ApplicationConfig.getComponentConfigValue('system-code');
106
+ const isPrivileged = await loginUser.checkPrivileges(
107
+ systemCode,
108
+ 'API_KEY_CREATE',
109
+ );
110
+
111
+ if (!isPrivileged) {
112
+ throw new ClassError(
113
+ 'APIKey',
114
+ 'APIKeyErrMsgO2',
115
+ 'User does not have privilege to generate API key.',
116
+ 'generate',
117
+ );
118
+ }
119
+
120
+ // Part 3: System Existence Check
121
+ // Call System.init(dbTransaction, this.SystemCode) to verify the System exists.
122
+ // If the group does not exist, throw a NotFoundError.
123
+
124
+ await System.init(dbTransaction, this.SystemCode);
125
+
126
+ // Part 3: Generate API Key
127
+ // Populate the following attributes:
128
+ // CreatedById: Set to loginUser.UserId.
129
+ this._CreatedById = loginUser.UserId;
130
+ // CreatedAt: Set to current date time.
131
+ this._CreatedAt = new Date();
132
+ // Generate a unique API key string:
133
+ // Use a secure random function or crypto module to generate a 64-character hexadecimal string.
134
+ // Assign the generated string to this.ApiKey.
135
+ this.ApiKey = randomBytes(64).toString('hex');
136
+
137
+ // Part 4: Save API Key to Database
138
+ // Call APIKey._Repo.create() by passing:
139
+ // loginUser
140
+ // dbTransaction
141
+ // This APIKey instance.
142
+ const EntityValueAfter: any = {
143
+ ApiKey: this.ApiKey,
144
+ Name: this.Name,
145
+ SystemCode: this.SystemCode,
146
+ Status: this.Status,
147
+ Description: this.Description,
148
+ ExpirationDate: this.ExpirationDate,
149
+ CreatedAt: this.CreatedAt,
150
+ CreatedById: this.CreatedById,
151
+ RevokedAt: this.RevokedAt,
152
+ RevokedById: this.RevokedById,
153
+ RevokedReason: this.RevokedReason,
154
+ };
155
+
156
+ const data = await APIKey._Repo.create(EntityValueAfter, {
157
+ transaction: dbTransaction,
158
+ });
159
+ this.APIKeyId = data.APIKeyId;
160
+ EntityValueAfter.ApiKeyId = data.APIKeyId;
161
+
162
+ // Part 5: Record Generate API Key Activity
163
+ // Initialise EntityValueBefore variable and set to empty object.
164
+ const EntityValueBefore = {};
165
+ // Initialise EntityValueAfter variable and set to this APIKey instance.
166
+ // Instantiate new activity from Activity class, call createId() method, then set:
167
+ const activity = new Activity();
168
+ activity.ActivityId = activity.createId();
169
+ // Action: ActionEnum.Create
170
+ // Description: "Generate API key."
171
+ // EntityType: "APIKey"
172
+ // EntityId: <this.APIKeyId>
173
+ // EntityValueBefore: EntityValueBefore
174
+ // EntityValueAfter: EntityValueAfter
175
+ activity.Action = ActionEnum.CREATE;
176
+ activity.Description = 'Generate API key.';
177
+ activity.EntityType = 'APIKey';
178
+ activity.EntityId = this.ObjectId;
179
+ activity.EntityValueBefore = JSON.stringify(EntityValueBefore);
180
+ activity.EntityValueAfter = JSON.stringify(EntityValueAfter);
181
+ // Call new activity create method by passing:
182
+ // dbTransaction
183
+ // userId: loginUser.ObjectId
184
+ await activity.create(loginUser.ObjectId, dbTransaction);
185
+
186
+ // Part 6: Returns
187
+ // Translate the created APIKey entity into an object and return the following fields:
188
+ // ApiKey
189
+ // Name
190
+ // Status
191
+ // ExpirationDate
192
+ // CreatedAt
193
+ // CreatedById
194
+ // InvokedAt
195
+ // InvokedById
196
+ return {
197
+ ApiKey: this.ApiKey,
198
+ Name: this.Name,
199
+ Status: this.Status,
200
+ Description: this.Description,
201
+ SystemCode: this.SystemCode,
202
+ ExpirationDate: this.ExpirationDate,
203
+ CreatedAt: this.CreatedAt,
204
+ CreatedById: this.CreatedById,
205
+ RevokedAt: this.RevokedAt,
206
+ RevokedById: this.RevokedById,
207
+ RevokedReason: this.RevokedReason,
208
+ };
209
+ } catch (error) {
210
+ throw error;
211
+ }
212
+ }
213
+
214
+ public static async findAll(
215
+ pagination: { page: number; limit: number },
216
+ loginUser: LoginUser,
217
+ dbTransaction: any,
218
+ whereOptions: {
219
+ SystemCode?: string;
220
+ Status?: APIKeyStatusEnum;
221
+ ExpirationDate?: {
222
+ FromDate: Date;
223
+ ToDate: Date;
224
+ };
225
+ CreatedById?: number;
226
+ },
227
+ sortOptions?: {
228
+ SortBy: string;
229
+ SortOrder: 'ASC' | 'DESC';
230
+ },
231
+ ) {
232
+ try {
233
+ // Part 1: Privilege Checking
234
+ // Call the loginUser.checkPrivileges() method by passing:
235
+ // SystemCode: Retrieved from the application configuration.
236
+ // PrivilegeCode: 'API_KEY_VIEW'.
237
+ // Ensure the user has the necessary privileges to view API keys.
238
+ const systemCode =
239
+ ApplicationConfig.getComponentConfigValue('system-code');
240
+ const isPrivileged = await loginUser.checkPrivileges(
241
+ systemCode,
242
+ 'API_KEY_VIEW',
243
+ );
244
+
245
+ if (!isPrivileged) {
246
+ throw new ClassError(
247
+ 'APIKey',
248
+ 'APIKeyErrMsgO2',
249
+ 'User does not have privilege to generate API key.',
250
+ 'generate',
251
+ );
252
+ }
253
+
254
+ // Part 2: Prepare Filters
255
+ // Ensure that whereOptions includes the necessary filters such as:
256
+ // Status: Filter for specific API key statuses (e.g., "Active", "Revoked").
257
+ // ExpirationDate: Filter for expiration date ranges (e.g., { [Op.between]: [fromDate, toDate] }).
258
+ // CreatedById: Filter by the user who created the API key.
259
+ const where = {};
260
+ if (whereOptions) {
261
+ if (whereOptions.SystemCode) {
262
+ where['SystemCode'] = whereOptions.SystemCode;
263
+ }
264
+ if (whereOptions.Status) {
265
+ where['Status'] = whereOptions.Status;
266
+ }
267
+ if (whereOptions.ExpirationDate) {
268
+ where['ExpirationDate'] = {
269
+ [Op.between]: [
270
+ whereOptions.ExpirationDate.FromDate,
271
+ whereOptions.ExpirationDate.ToDate,
272
+ ],
273
+ };
274
+ }
275
+ if (whereOptions.CreatedById) {
276
+ where['CreatedById'] = whereOptions.CreatedById;
277
+ }
278
+ }
279
+
280
+ const order = [];
281
+ if (sortOptions) {
282
+ // Sort the results based on the provided SortBy and SortOrder.
283
+ // Ensure that the SortBy field is valid and that the SortOrder is either "ASC" or "DESC".
284
+ if (sortOptions.SortBy) {
285
+ order.push([sortOptions.SortBy, sortOptions.SortOrder]);
286
+ }
287
+ } else {
288
+ order.push(['CreatedAt', 'DESC']);
289
+ }
290
+
291
+ let offset = 0;
292
+ if (pagination) {
293
+ offset = (pagination.page - 1) * pagination.limit;
294
+ }
295
+
296
+ // Ensure that the pagination object includes the page and limit values.
297
+ // Use Sequelize's findAll() method with the provided whereOptions, sortOptions, and pagination to retrieve matching API keys.
298
+ const data = await APIKey._Repo.findAllWithPagination({
299
+ where,
300
+ order,
301
+ offset,
302
+ limit: pagination.limit,
303
+ transaction: dbTransaction,
304
+ distinct: true,
305
+ });
306
+
307
+ // Return the list of API keys including:
308
+ // ApiKeyId
309
+ // ApiKey
310
+ // Name
311
+ // Status
312
+ // ExpirationDate
313
+ // CreatedAt
314
+ // CreatedById
315
+ // RevokedAt
316
+ // RevokedById
317
+ // RevokedReason
318
+ // Include pagination information such as:
319
+ // total: Total number of records,
320
+ // page: Current page,
321
+ // limit: Number of records per page.
322
+
323
+ return {
324
+ total: data.count,
325
+ ApiKeys: data.rows.map((row) => {
326
+ return {
327
+ ApiKeyId: row.APIKeyId,
328
+ ApiKey: row.ApiKey,
329
+ Name: row.Name,
330
+ SystemCode: row.SystemCode,
331
+ Description: row.Description,
332
+ Status: row.Status,
333
+ ExpirationDate: row.ExpirationDate,
334
+ CreatedAt: row.CreatedAt,
335
+ CreatedById: row.CreatedById,
336
+ RevokedAt: row.RevokedAt,
337
+ RevokedById: row.RevokedById,
338
+ RevokedReason: row.RevokedReason,
339
+ };
340
+ }),
341
+ page: pagination.page,
342
+ limit: pagination.limit,
343
+ };
344
+ } catch (error) {
345
+ throw error;
346
+ }
347
+ }
348
+
349
+ public async revoke(
350
+ apiKey: string,
351
+ loginUser: LoginUser,
352
+ dbTransaction: any,
353
+ reason?: string,
354
+ ) {
355
+ try {
356
+ // Part 1: Prepare Required Params
357
+ // Ensure apiKey, loginUser, and dbTransaction are provided.
358
+ // Retrieve the existing API key record from the database using the provided apiKey.
359
+ const apiKeyRecord = await APIKey._Repo.findOne({
360
+ where: { ApiKey: apiKey },
361
+ transaction: dbTransaction,
362
+ });
363
+ if (!apiKeyRecord) {
364
+ throw new ClassError(
365
+ 'APIKey',
366
+ 'APIKeyErrMsgO3',
367
+ 'API key not found.',
368
+ 'revoke',
369
+ );
370
+ }
371
+ const EntityValueBefore = {
372
+ ...apiKeyRecord.get({ plain: true }),
373
+ };
374
+
375
+ // Part 2: Revoke API Key
376
+ // Mark the API key as revoked:
377
+ // Set the Status to "Revoked".
378
+ apiKeyRecord.Status = APIKeyStatusEnum.REVOKED;
379
+ // Set the RevokedAt timestamp to the current date and time.\
380
+ apiKeyRecord.RevokedAt = new Date();
381
+ // Set the RevokedById to loginUser.UserId.
382
+ apiKeyRecord.RevokedById = loginUser.UserId;
383
+ // Optionally, set the revocation reason:
384
+ // If the reason parameter is provided, store it in the RevokedReason attribute.
385
+ if (reason) {
386
+ apiKeyRecord.RevokedReason = reason;
387
+ }
388
+
389
+ // Part 3: Save API Key to Database
390
+ // Call APIKey._Repo.update() by passing:
391
+ // The updated APIKey instance
392
+ // dbTransaction.
393
+ await APIKey._Repo.update(
394
+ {
395
+ ...apiKeyRecord.get({ plain: true }),
396
+ },
397
+ {
398
+ where: { APIKeyId: apiKeyRecord.APIKeyId },
399
+ transaction: dbTransaction,
400
+ },
401
+ );
402
+
403
+ // Part 4: Record Update API Key Activity
404
+ // Initialise EntityValueBefore variable and set to empty object.
405
+ // Initialise EntityValueAfter variable and set to this APIKey instance.
406
+ const EntityValueAfter = {
407
+ ...apiKeyRecord.get({ plain: true }),
408
+ };
409
+ // Instantiate new activity from Activity class, call createId() method, then set:
410
+ // Action: ActionEnum.Create
411
+ // Description: "Revoke API key."
412
+ // EntityType: "APIKey"
413
+ // EntityId: <this.APIKeyId>
414
+ // EntityValueBefore: EntityValueBefore
415
+ // EntityValueAfter: EntityValueAfter
416
+ const activity = new Activity();
417
+ activity.ActivityId = activity.createId();
418
+ activity.Action = ActionEnum.UPDATE;
419
+ activity.Description = 'Revoke API key.';
420
+ activity.EntityType = 'APIKey';
421
+ activity.EntityId = apiKeyRecord.APIKeyId.toString();
422
+ activity.EntityValueBefore = JSON.stringify(EntityValueBefore);
423
+ activity.EntityValueAfter = JSON.stringify(EntityValueAfter);
424
+ // Call new activity create method by passing:
425
+ // dbTransaction
426
+ // userId: loginUser.ObjectId
427
+ await activity.create(loginUser.ObjectId, dbTransaction);
428
+
429
+ // Part 5: Returns
430
+ // Translate the updated APIKey entity into an object and return the following fields:
431
+ // ApiKey
432
+ // Status: "Revoked"
433
+ // RevokedAt
434
+ // RevokedById
435
+ // RevokedByName
436
+ // RevokedReason
437
+ return {
438
+ ApiKey: apiKeyRecord.ApiKey,
439
+ Status: apiKeyRecord.Status,
440
+ RevokedAt: apiKeyRecord.RevokedAt,
441
+ RevokedById: apiKeyRecord.RevokedById,
442
+ RevokedReason: apiKeyRecord.RevokedReason,
443
+ };
444
+ } catch (error) {
445
+ throw error;
446
+ }
447
+ }
448
+ }