@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.
- package/.commitlintrc.json +22 -22
- package/.gitlab-ci.yml +16 -16
- package/.husky/commit-msg +15 -15
- package/.husky/pre-commit +7 -7
- package/.prettierrc +4 -4
- package/Jenkinsfile +57 -57
- package/README.md +23 -23
- package/__tests__/unit/components/group/group.spec.ts +79 -79
- package/__tests__/unit/components/group-object-privilege/group-object-privilege.spec.ts +88 -88
- package/__tests__/unit/components/group-privilege/group-privilege.spec.ts +68 -68
- package/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.ts +66 -66
- package/__tests__/unit/components/group-system-access/group-system-access.spec.ts +83 -83
- package/__tests__/unit/components/login-user/l.spec.ts +746 -746
- package/__tests__/unit/components/login-user/login.spec.ts +1164 -1164
- package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +31 -31
- package/__tests__/unit/components/system/system.spec.ts +254 -254
- package/__tests__/unit/components/system-privilege/system-privilege.spec.ts +83 -83
- package/__tests__/unit/components/user-group/user-group.spec.ts +86 -86
- package/__tests__/unit/components/user-object-privilege/user-object-privilege.spec.ts +78 -78
- package/__tests__/unit/components/user-privilege/user-privilege.spec.ts +72 -72
- package/__tests__/unit/components/user-system-access/user-system-access.spec.ts +89 -89
- package/__tests__/unit/redis-client/redis.service.spec.ts +23 -23
- package/__tests__/unit/session/session.service.spec.ts +47 -47
- package/__tests__/unit/system-privilege/system-privilage.spec.ts +91 -91
- package/coverage/clover.xml +1452 -1452
- package/coverage/coverage-final.json +47 -47
- package/coverage/lcov-report/base.css +224 -224
- package/coverage/lcov-report/block-navigation.js +87 -87
- package/coverage/lcov-report/components/group/group.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group/group.ts.html +327 -327
- package/coverage/lcov-report/components/group/index.html +130 -130
- package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.ts.html +321 -321
- package/coverage/lcov-report/components/group-object-privilege/index.html +130 -130
- package/coverage/lcov-report/components/group-privilege/group-privilege.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group-privilege/group-privilege.ts.html +303 -303
- package/coverage/lcov-report/components/group-privilege/index.html +130 -130
- package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.ts.html +327 -327
- package/coverage/lcov-report/components/group-reporting-user/index.html +130 -130
- package/coverage/lcov-report/components/group-system-access/group-system-access.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group-system-access/group-system-access.ts.html +309 -309
- package/coverage/lcov-report/components/group-system-access/index.html +130 -130
- package/coverage/lcov-report/components/login-history/index.html +115 -115
- package/coverage/lcov-report/components/login-history/login-history.repository.ts.html +117 -117
- package/coverage/lcov-report/components/login-user/index.html +130 -130
- package/coverage/lcov-report/components/login-user/login-user.ts.html +5007 -5007
- package/coverage/lcov-report/components/login-user/user.repository.ts.html +117 -117
- package/coverage/lcov-report/components/password-hash/index.html +115 -115
- package/coverage/lcov-report/components/password-hash/password-hash.service.ts.html +126 -126
- package/coverage/lcov-report/components/system/index.html +130 -130
- package/coverage/lcov-report/components/system/system.repository.ts.html +117 -117
- package/coverage/lcov-report/components/system/system.ts.html +909 -909
- package/coverage/lcov-report/components/system-privilege/index.html +130 -130
- package/coverage/lcov-report/components/system-privilege/system-privilege.repository.ts.html +120 -120
- package/coverage/lcov-report/components/system-privilege/system-privilege.ts.html +390 -390
- package/coverage/lcov-report/components/user-group/index.html +130 -130
- package/coverage/lcov-report/components/user-group/user-group.repository.ts.html +117 -117
- package/coverage/lcov-report/components/user-group/user-group.ts.html +354 -354
- package/coverage/lcov-report/components/user-object-privilege/index.html +130 -130
- package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.repository.ts.html +117 -117
- package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.ts.html +312 -312
- package/coverage/lcov-report/components/user-privilege/index.html +130 -130
- package/coverage/lcov-report/components/user-privilege/user-privilege.repository.ts.html +117 -117
- package/coverage/lcov-report/components/user-privilege/user-privilege.ts.html +306 -306
- package/coverage/lcov-report/components/user-system-access/index.html +130 -130
- package/coverage/lcov-report/components/user-system-access/user-system-access.repository.ts.html +117 -117
- package/coverage/lcov-report/components/user-system-access/user-system-access.ts.html +312 -312
- package/coverage/lcov-report/enum/group-type.enum.ts.html +108 -108
- package/coverage/lcov-report/enum/index.html +160 -160
- package/coverage/lcov-report/enum/index.ts.html +93 -93
- package/coverage/lcov-report/enum/user-status.enum.ts.html +105 -105
- package/coverage/lcov-report/enum/yn.enum.ts.html +96 -96
- package/coverage/lcov-report/index.html +370 -370
- package/coverage/lcov-report/models/group-object-privilege.entity.ts.html +333 -333
- package/coverage/lcov-report/models/group-privilege.entity.ts.html +315 -315
- package/coverage/lcov-report/models/group-reporting-user.entity.ts.html +339 -339
- package/coverage/lcov-report/models/group-system-access.entity.ts.html +324 -324
- package/coverage/lcov-report/models/group.entity.ts.html +435 -435
- package/coverage/lcov-report/models/index.html +310 -310
- package/coverage/lcov-report/models/login-history.entity.ts.html +252 -252
- package/coverage/lcov-report/models/staff.entity.ts.html +411 -411
- package/coverage/lcov-report/models/system-privilege.entity.ts.html +354 -354
- package/coverage/lcov-report/models/system.entity.ts.html +423 -423
- package/coverage/lcov-report/models/user-group.entity.ts.html +354 -354
- package/coverage/lcov-report/models/user-object-privilege.entity.ts.html +330 -330
- package/coverage/lcov-report/models/user-privilege.entity.ts.html +315 -315
- package/coverage/lcov-report/models/user-system-access.entity.ts.html +315 -315
- package/coverage/lcov-report/models/user.entity.ts.html +522 -522
- package/coverage/lcov-report/prettify.css +1 -1
- package/coverage/lcov-report/prettify.js +2 -2
- package/coverage/lcov-report/redis-client/index.html +115 -115
- package/coverage/lcov-report/redis-client/redis.service.ts.html +240 -240
- package/coverage/lcov-report/session/index.html +115 -115
- package/coverage/lcov-report/session/session.service.ts.html +246 -246
- package/coverage/lcov-report/sorter.js +196 -196
- package/coverage/lcov.info +2490 -2490
- package/coverage/test-report.xml +128 -128
- package/create-sso-user.sql +39 -39
- package/dist/src/components/login-user/user.js +8 -0
- package/dist/src/components/login-user/user.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eslint.config.mjs +58 -58
- package/jest.config.js +14 -14
- package/migrations/20240314080602-create-user-table.js +124 -124
- package/migrations/20240314080603-create-user-group-table.js +85 -85
- package/migrations/20240314080604-create-user-user-group-table.js +55 -55
- package/migrations/20240314080605-create-login-history-table.js +53 -53
- package/migrations/20240527064925-create-system-table.js +78 -78
- package/migrations/20240527064926-create-system-privilege-table.js +71 -71
- package/migrations/20240527065342-create-group-table.js +93 -93
- package/migrations/20240527065633-create-group-reporting-user-table.js +76 -76
- package/migrations/20240528011551-create-group-system-access-table.js +72 -72
- package/migrations/20240528023018-user-system-access-table.js +75 -75
- package/migrations/20240528032229-user-privilege-table.js +76 -76
- package/migrations/20240528063003-create-group-privilege-table.js +76 -76
- package/migrations/20240528063051-create-group-object-privilege-table.js +84 -84
- package/migrations/20240528063107-create-user-object-privilege-table.js +84 -84
- package/migrations/20240528063108-create-api-key-table.js +85 -85
- package/migrations/20241104104802-create-building-table.js +95 -95
- package/migrations/20250108091132-add-area-manager-user-id-to-building-table.js +14 -14
- package/migrations/20250108091133-add-passcode-to-user-table.js +36 -36
- package/migrations/20250210115636-create-user-reporting-hierarchy.js +76 -76
- package/migrations/20250326043818-crate-user-password-history.js +42 -42
- package/package.json +90 -90
- package/sampledotenv +7 -7
- package/sonar-project.properties +22 -22
- package/src/components/api-key/api-key.repository.ts +15 -15
- package/src/components/api-key/api-key.ts +448 -448
- package/src/components/api-key/index.ts +4 -4
- package/src/components/building/building.repository.ts +27 -27
- package/src/components/building/index.ts +2 -2
- package/src/components/group/group.repository.ts +26 -26
- package/src/components/group/group.ts +2284 -2284
- package/src/components/group/index.ts +3 -3
- package/src/components/group-object-privilege/group-object-privilege.repository.ts +25 -25
- package/src/components/group-object-privilege/group-object-privilege.ts +278 -278
- package/src/components/group-object-privilege/index.ts +2 -2
- package/src/components/group-privilege/group-privilege.repository.ts +29 -29
- package/src/components/group-privilege/group-privilege.ts +84 -84
- package/src/components/group-privilege/index.ts +2 -2
- package/src/components/group-reporting-user/group-reporting-user.repository.ts +23 -23
- package/src/components/group-reporting-user/group-reporting-user.ts +506 -506
- package/src/components/group-reporting-user/index.ts +3 -3
- package/src/components/group-system-access/group-system-access.repository.ts +43 -43
- package/src/components/group-system-access/group-system-access.ts +90 -90
- package/src/components/group-system-access/index.ts +2 -2
- package/src/components/index.ts +20 -20
- package/src/components/login-history/index.ts +1 -1
- package/src/components/login-history/login-history.repository.ts +11 -11
- package/src/components/login-user/index.ts +5 -5
- package/src/components/login-user/interfaces/check-user-info-duplicated.interface.ts +7 -7
- package/src/components/login-user/interfaces/index.ts +1 -1
- package/src/components/login-user/interfaces/system-access.interface.ts +13 -13
- package/src/components/login-user/interfaces/user-info.interface.ts +34 -34
- package/src/components/login-user/login-user.ts +362 -362
- package/src/components/login-user/user.repository.ts +11 -11
- package/src/components/login-user/user.ts +3142 -3134
- package/src/components/password-hash/index.ts +2 -2
- package/src/components/password-hash/interfaces/index.ts +1 -1
- package/src/components/password-hash/interfaces/password-hash-service.interface.ts +4 -4
- package/src/components/password-hash/password-hash.service.ts +14 -14
- package/src/components/staff/index.ts +2 -2
- package/src/components/staff/staff.repository.ts +27 -27
- package/src/components/system/index.ts +3 -3
- package/src/components/system/system.repository.ts +11 -11
- package/src/components/system/system.ts +456 -456
- package/src/components/system-privilege/index.ts +4 -4
- package/src/components/system-privilege/system-privilege.repository.ts +18 -18
- package/src/components/system-privilege/system-privilege.ts +541 -541
- package/src/components/user-group/index.ts +2 -2
- package/src/components/user-group/user-group.repository.ts +19 -19
- package/src/components/user-group/user-group.ts +764 -764
- package/src/components/user-object-privilege/index.ts +2 -2
- package/src/components/user-object-privilege/user-object-privilege.repository.ts +11 -11
- package/src/components/user-object-privilege/user-object-privilege.ts +79 -79
- package/src/components/user-password-history/index.ts +2 -2
- package/src/components/user-password-history/user-password-history.repository.ts +39 -39
- package/src/components/user-password-history/user-password-history.ts +187 -187
- package/src/components/user-privilege/index.ts +2 -2
- package/src/components/user-privilege/user-privilege.repository.ts +25 -25
- package/src/components/user-privilege/user-privilege.ts +662 -662
- package/src/components/user-reporting-hierarchy/index.ts +2 -2
- package/src/components/user-reporting-hierarchy/user-reporting-hierarchy.repository.ts +30 -30
- package/src/components/user-reporting-hierarchy/user-reporting-hierarchy.ts +505 -505
- package/src/components/user-system-access/index.ts +2 -2
- package/src/components/user-system-access/user-system-access.repository.ts +41 -41
- package/src/components/user-system-access/user-system-access.ts +717 -717
- package/src/database.ts +15 -15
- package/src/enum/api-key.enum.ts +5 -5
- package/src/enum/building-type.enum.ts +6 -6
- package/src/enum/group-type.enum.ts +8 -8
- package/src/enum/index.ts +6 -6
- package/src/enum/login-status.enum.ts +4 -4
- package/src/enum/object-status.enum.ts +4 -4
- package/src/enum/user-status.enum.ts +7 -7
- package/src/enum/yn.enum.ts +4 -4
- package/src/index.ts +8 -8
- package/src/interfaces/api-key-attr.interface.ts +16 -16
- package/src/interfaces/group-object-privilege.interface.ts +14 -14
- package/src/interfaces/group-privilege.interface.ts +10 -10
- package/src/interfaces/group-reporting-user.interface.ts +11 -11
- package/src/interfaces/group-search-attr.interface.ts +9 -9
- package/src/interfaces/group-system-access.interface.ts +10 -10
- package/src/interfaces/group.interface.ts +17 -17
- package/src/interfaces/index.ts +13 -13
- package/src/interfaces/system-login.interface.ts +6 -6
- package/src/interfaces/system-privilege-search.interface.ts +5 -5
- package/src/interfaces/system-privilege.interface.ts +11 -11
- package/src/interfaces/system-search-attr.interface.ts +5 -5
- package/src/interfaces/system.interface.ts +15 -15
- package/src/interfaces/user-group.interface.ts +12 -12
- package/src/interfaces/user-object-privilege.interface.ts +14 -14
- package/src/interfaces/user-password-history.interface.ts +6 -6
- package/src/interfaces/user-privilege.interface.ts +10 -10
- package/src/interfaces/user-reporting-hierarchy.interface.ts +11 -11
- package/src/interfaces/user-session.interface.ts +5 -5
- package/src/interfaces/user-system-access.interface.ts +10 -10
- package/src/models/api-key-entity.ts +101 -101
- package/src/models/building.entity.ts +103 -103
- package/src/models/group-object-privilege.entity.ts +91 -91
- package/src/models/group-privilege.entity.ts +78 -78
- package/src/models/group-reporting-user.entity.ts +95 -95
- package/src/models/group-system-access.entity.ts +81 -81
- package/src/models/group.entity.ts +127 -127
- package/src/models/login-history.entity.ts +63 -63
- package/src/models/staff.entity.ts +91 -91
- package/src/models/system-privilege.entity.ts +90 -90
- package/src/models/system.entity.ts +113 -113
- package/src/models/user-group.entity.ts +91 -91
- package/src/models/user-object-privilege.entity.ts +90 -90
- package/src/models/user-password-history.ts +51 -51
- package/src/models/user-privilege.entity.ts +78 -78
- package/src/models/user-reporting-hierarchy.entity.ts +102 -102
- package/src/models/user-system-access.entity.ts +87 -87
- package/src/models/user.entity.ts +193 -193
- package/src/redis-client/__mocks__/jest-initial-setup.ts +2 -2
- package/src/redis-client/__mocks__/redis-mock.ts +28 -28
- package/src/redis-client/index.ts +1 -1
- package/src/redis-client/redis.service.ts +75 -75
- package/src/session/index.ts +2 -2
- package/src/session/interfaces/index.ts +1 -1
- package/src/session/interfaces/session-service.interface.ts +26 -26
- package/src/session/session.service.ts +96 -96
- package/src/types/auth-context.ts +10 -10
- package/src/types/index.ts +1 -1
- package/tsconfig.build.json +5 -5
- package/tsconfig.json +23 -23
- package/dist/components/api-key/api-key.d.ts +0 -85
- package/dist/components/api-key/api-key.d.ts.map +0 -1
- package/dist/components/api-key/api-key.js +0 -245
- package/dist/components/api-key/api-key.js.map +0 -1
- package/dist/components/api-key/api-key.repository.d.ts +0 -7
- package/dist/components/api-key/api-key.repository.d.ts.map +0 -1
- package/dist/components/api-key/api-key.repository.js +0 -18
- package/dist/components/api-key/api-key.repository.js.map +0 -1
- package/dist/components/api-key/index.d.ts +0 -4
- package/dist/components/api-key/index.d.ts.map +0 -1
- package/dist/components/api-key/index.js +0 -8
- package/dist/components/api-key/index.js.map +0 -1
- package/dist/components/building/building.repository.d.ts +0 -7
- package/dist/components/building/building.repository.d.ts.map +0 -1
- package/dist/components/building/building.repository.js +0 -30
- package/dist/components/building/building.repository.js.map +0 -1
- package/dist/components/building/index.d.ts +0 -2
- package/dist/components/building/index.d.ts.map +0 -1
- package/dist/components/building/index.js +0 -18
- package/dist/components/building/index.js.map +0 -1
- package/dist/components/group/group.d.ts +0 -129
- package/dist/components/group/group.d.ts.map +0 -1
- package/dist/components/group/group.js +0 -1337
- package/dist/components/group/group.js.map +0 -1
- package/dist/components/group/group.repository.d.ts +0 -8
- package/dist/components/group/group.repository.d.ts.map +0 -1
- package/dist/components/group/group.repository.js +0 -29
- package/dist/components/group/group.repository.js.map +0 -1
- package/dist/components/group/index.d.ts +0 -3
- package/dist/components/group/index.d.ts.map +0 -1
- package/dist/components/group/index.js +0 -19
- package/dist/components/group/index.js.map +0 -1
- package/dist/components/group-object-privilege/group-object-privilege.d.ts +0 -28
- package/dist/components/group-object-privilege/group-object-privilege.d.ts.map +0 -1
- package/dist/components/group-object-privilege/group-object-privilege.js +0 -163
- package/dist/components/group-object-privilege/group-object-privilege.js.map +0 -1
- package/dist/components/group-object-privilege/group-object-privilege.repository.d.ts +0 -7
- package/dist/components/group-object-privilege/group-object-privilege.repository.d.ts.map +0 -1
- package/dist/components/group-object-privilege/group-object-privilege.repository.js +0 -26
- package/dist/components/group-object-privilege/group-object-privilege.repository.js.map +0 -1
- package/dist/components/group-object-privilege/index.d.ts +0 -3
- package/dist/components/group-object-privilege/index.d.ts.map +0 -1
- package/dist/components/group-object-privilege/index.js +0 -19
- package/dist/components/group-object-privilege/index.js.map +0 -1
- package/dist/components/group-privilege/group-privilege.d.ts +0 -25
- package/dist/components/group-privilege/group-privilege.d.ts.map +0 -1
- package/dist/components/group-privilege/group-privilege.js +0 -67
- package/dist/components/group-privilege/group-privilege.js.map +0 -1
- package/dist/components/group-privilege/group-privilege.repository.d.ts +0 -7
- package/dist/components/group-privilege/group-privilege.repository.d.ts.map +0 -1
- package/dist/components/group-privilege/group-privilege.repository.js +0 -28
- package/dist/components/group-privilege/group-privilege.repository.js.map +0 -1
- package/dist/components/group-privilege/index.d.ts +0 -3
- package/dist/components/group-privilege/index.d.ts.map +0 -1
- package/dist/components/group-privilege/index.js +0 -19
- package/dist/components/group-privilege/index.js.map +0 -1
- package/dist/components/group-reporting-user/group-reporting-user.d.ts +0 -30
- package/dist/components/group-reporting-user/group-reporting-user.d.ts.map +0 -1
- package/dist/components/group-reporting-user/group-reporting-user.js +0 -277
- package/dist/components/group-reporting-user/group-reporting-user.js.map +0 -1
- package/dist/components/group-reporting-user/group-reporting-user.repository.d.ts +0 -7
- package/dist/components/group-reporting-user/group-reporting-user.repository.d.ts.map +0 -1
- package/dist/components/group-reporting-user/group-reporting-user.repository.js +0 -23
- package/dist/components/group-reporting-user/group-reporting-user.repository.js.map +0 -1
- package/dist/components/group-reporting-user/index.d.ts +0 -3
- package/dist/components/group-reporting-user/index.d.ts.map +0 -1
- package/dist/components/group-reporting-user/index.js +0 -19
- package/dist/components/group-reporting-user/index.js.map +0 -1
- package/dist/components/group-system-access/group-system-access.d.ts +0 -28
- package/dist/components/group-system-access/group-system-access.d.ts.map +0 -1
- package/dist/components/group-system-access/group-system-access.js +0 -70
- package/dist/components/group-system-access/group-system-access.js.map +0 -1
- package/dist/components/group-system-access/group-system-access.repository.d.ts +0 -8
- package/dist/components/group-system-access/group-system-access.repository.d.ts.map +0 -1
- package/dist/components/group-system-access/group-system-access.repository.js +0 -46
- package/dist/components/group-system-access/group-system-access.repository.js.map +0 -1
- package/dist/components/group-system-access/index.d.ts +0 -3
- package/dist/components/group-system-access/index.d.ts.map +0 -1
- package/dist/components/group-system-access/index.js +0 -19
- package/dist/components/group-system-access/index.js.map +0 -1
- package/dist/components/index.d.ts +0 -18
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -34
- package/dist/components/index.js.map +0 -1
- package/dist/components/login-history/index.d.ts +0 -2
- package/dist/components/login-history/index.d.ts.map +0 -1
- package/dist/components/login-history/index.js +0 -18
- package/dist/components/login-history/index.js.map +0 -1
- package/dist/components/login-history/login-history.repository.d.ts +0 -6
- package/dist/components/login-history/login-history.repository.d.ts.map +0 -1
- package/dist/components/login-history/login-history.repository.js +0 -15
- package/dist/components/login-history/login-history.repository.js.map +0 -1
- package/dist/components/login-user/index.d.ts +0 -5
- package/dist/components/login-user/index.d.ts.map +0 -1
- package/dist/components/login-user/index.js +0 -21
- package/dist/components/login-user/index.js.map +0 -1
- package/dist/components/login-user/interfaces/check-user-info-duplicated.interface.d.ts +0 -8
- package/dist/components/login-user/interfaces/check-user-info-duplicated.interface.d.ts.map +0 -1
- package/dist/components/login-user/interfaces/check-user-info-duplicated.interface.js +0 -3
- package/dist/components/login-user/interfaces/check-user-info-duplicated.interface.js.map +0 -1
- package/dist/components/login-user/interfaces/index.d.ts +0 -2
- package/dist/components/login-user/interfaces/index.d.ts.map +0 -1
- package/dist/components/login-user/interfaces/index.js +0 -18
- package/dist/components/login-user/interfaces/index.js.map +0 -1
- package/dist/components/login-user/interfaces/system-access.interface.d.ts +0 -14
- package/dist/components/login-user/interfaces/system-access.interface.d.ts.map +0 -1
- package/dist/components/login-user/interfaces/system-access.interface.js +0 -3
- package/dist/components/login-user/interfaces/system-access.interface.js.map +0 -1
- package/dist/components/login-user/interfaces/user-info.interface.d.ts +0 -31
- package/dist/components/login-user/interfaces/user-info.interface.d.ts.map +0 -1
- package/dist/components/login-user/interfaces/user-info.interface.js +0 -3
- package/dist/components/login-user/interfaces/user-info.interface.js.map +0 -1
- package/dist/components/login-user/login-user.d.ts +0 -14
- package/dist/components/login-user/login-user.d.ts.map +0 -1
- package/dist/components/login-user/login-user.js +0 -127
- package/dist/components/login-user/login-user.js.map +0 -1
- package/dist/components/login-user/user.d.ts +0 -155
- package/dist/components/login-user/user.d.ts.map +0 -1
- package/dist/components/login-user/user.js +0 -1753
- package/dist/components/login-user/user.js.map +0 -1
- package/dist/components/login-user/user.repository.d.ts +0 -6
- package/dist/components/login-user/user.repository.d.ts.map +0 -1
- package/dist/components/login-user/user.repository.js +0 -15
- package/dist/components/login-user/user.repository.js.map +0 -1
- package/dist/components/password-hash/index.d.ts +0 -3
- package/dist/components/password-hash/index.d.ts.map +0 -1
- package/dist/components/password-hash/index.js +0 -19
- package/dist/components/password-hash/index.js.map +0 -1
- package/dist/components/password-hash/interfaces/index.d.ts +0 -2
- package/dist/components/password-hash/interfaces/index.d.ts.map +0 -1
- package/dist/components/password-hash/interfaces/index.js +0 -18
- package/dist/components/password-hash/interfaces/index.js.map +0 -1
- package/dist/components/password-hash/interfaces/password-hash-service.interface.d.ts +0 -5
- package/dist/components/password-hash/interfaces/password-hash-service.interface.d.ts.map +0 -1
- package/dist/components/password-hash/interfaces/password-hash-service.interface.js +0 -3
- package/dist/components/password-hash/interfaces/password-hash-service.interface.js.map +0 -1
- package/dist/components/password-hash/password-hash.service.d.ts +0 -7
- package/dist/components/password-hash/password-hash.service.d.ts.map +0 -1
- package/dist/components/password-hash/password-hash.service.js +0 -48
- package/dist/components/password-hash/password-hash.service.js.map +0 -1
- package/dist/components/staff/index.d.ts +0 -2
- package/dist/components/staff/index.d.ts.map +0 -1
- package/dist/components/staff/index.js +0 -18
- package/dist/components/staff/index.js.map +0 -1
- package/dist/components/staff/staff.repository.d.ts +0 -7
- package/dist/components/staff/staff.repository.d.ts.map +0 -1
- package/dist/components/staff/staff.repository.js +0 -30
- package/dist/components/staff/staff.repository.js.map +0 -1
- package/dist/components/system/index.d.ts +0 -3
- package/dist/components/system/index.d.ts.map +0 -1
- package/dist/components/system/index.js +0 -19
- package/dist/components/system/index.js.map +0 -1
- package/dist/components/system/system.d.ts +0 -40
- package/dist/components/system/system.d.ts.map +0 -1
- package/dist/components/system/system.js +0 -283
- package/dist/components/system/system.js.map +0 -1
- package/dist/components/system/system.repository.d.ts +0 -6
- package/dist/components/system/system.repository.d.ts.map +0 -1
- package/dist/components/system/system.repository.js +0 -15
- package/dist/components/system/system.repository.js.map +0 -1
- package/dist/components/system-privilege/index.d.ts +0 -4
- package/dist/components/system-privilege/index.d.ts.map +0 -1
- package/dist/components/system-privilege/index.js +0 -8
- package/dist/components/system-privilege/index.js.map +0 -1
- package/dist/components/system-privilege/system-privilege.d.ts +0 -53
- package/dist/components/system-privilege/system-privilege.d.ts.map +0 -1
- package/dist/components/system-privilege/system-privilege.js +0 -315
- package/dist/components/system-privilege/system-privilege.js.map +0 -1
- package/dist/components/system-privilege/system-privilege.repository.d.ts +0 -7
- package/dist/components/system-privilege/system-privilege.repository.d.ts.map +0 -1
- package/dist/components/system-privilege/system-privilege.repository.js +0 -21
- package/dist/components/system-privilege/system-privilege.repository.js.map +0 -1
- package/dist/components/user-group/index.d.ts +0 -3
- package/dist/components/user-group/index.d.ts.map +0 -1
- package/dist/components/user-group/index.js +0 -19
- package/dist/components/user-group/index.js.map +0 -1
- package/dist/components/user-group/user-group.d.ts +0 -51
- package/dist/components/user-group/user-group.d.ts.map +0 -1
- package/dist/components/user-group/user-group.js +0 -335
- package/dist/components/user-group/user-group.js.map +0 -1
- package/dist/components/user-group/user-group.repository.d.ts +0 -6
- package/dist/components/user-group/user-group.repository.d.ts.map +0 -1
- package/dist/components/user-group/user-group.repository.js +0 -15
- package/dist/components/user-group/user-group.repository.js.map +0 -1
- package/dist/components/user-object-privilege/index.d.ts +0 -3
- package/dist/components/user-object-privilege/index.d.ts.map +0 -1
- package/dist/components/user-object-privilege/index.js +0 -19
- package/dist/components/user-object-privilege/index.js.map +0 -1
- package/dist/components/user-object-privilege/user-object-privilege.d.ts +0 -24
- package/dist/components/user-object-privilege/user-object-privilege.d.ts.map +0 -1
- package/dist/components/user-object-privilege/user-object-privilege.js +0 -59
- package/dist/components/user-object-privilege/user-object-privilege.js.map +0 -1
- package/dist/components/user-object-privilege/user-object-privilege.repository.d.ts +0 -6
- package/dist/components/user-object-privilege/user-object-privilege.repository.d.ts.map +0 -1
- package/dist/components/user-object-privilege/user-object-privilege.repository.js +0 -15
- package/dist/components/user-object-privilege/user-object-privilege.repository.js.map +0 -1
- package/dist/components/user-privilege/index.d.ts +0 -3
- package/dist/components/user-privilege/index.d.ts.map +0 -1
- package/dist/components/user-privilege/index.js +0 -19
- package/dist/components/user-privilege/index.js.map +0 -1
- package/dist/components/user-privilege/user-privilege.d.ts +0 -71
- package/dist/components/user-privilege/user-privilege.d.ts.map +0 -1
- package/dist/components/user-privilege/user-privilege.js +0 -388
- package/dist/components/user-privilege/user-privilege.js.map +0 -1
- package/dist/components/user-privilege/user-privilege.repository.d.ts +0 -7
- package/dist/components/user-privilege/user-privilege.repository.d.ts.map +0 -1
- package/dist/components/user-privilege/user-privilege.repository.js +0 -29
- package/dist/components/user-privilege/user-privilege.repository.js.map +0 -1
- package/dist/components/user-system-access/index.d.ts +0 -3
- package/dist/components/user-system-access/index.d.ts.map +0 -1
- package/dist/components/user-system-access/index.js +0 -19
- package/dist/components/user-system-access/index.js.map +0 -1
- package/dist/components/user-system-access/user-system-access.d.ts +0 -69
- package/dist/components/user-system-access/user-system-access.d.ts.map +0 -1
- package/dist/components/user-system-access/user-system-access.js +0 -413
- package/dist/components/user-system-access/user-system-access.js.map +0 -1
- package/dist/components/user-system-access/user-system-access.repository.d.ts +0 -8
- package/dist/components/user-system-access/user-system-access.repository.d.ts.map +0 -1
- package/dist/components/user-system-access/user-system-access.repository.js +0 -44
- package/dist/components/user-system-access/user-system-access.repository.js.map +0 -1
- package/dist/database.d.ts +0 -5
- package/dist/database.d.ts.map +0 -1
- package/dist/database.js +0 -14
- package/dist/database.js.map +0 -1
- package/dist/enum/api-key.enum.d.ts +0 -6
- package/dist/enum/api-key.enum.d.ts.map +0 -1
- package/dist/enum/api-key.enum.js +0 -10
- package/dist/enum/api-key.enum.js.map +0 -1
- package/dist/enum/group-type.enum.d.ts +0 -9
- package/dist/enum/group-type.enum.d.ts.map +0 -1
- package/dist/enum/group-type.enum.js +0 -13
- package/dist/enum/group-type.enum.js.map +0 -1
- package/dist/enum/index.d.ts +0 -7
- package/dist/enum/index.d.ts.map +0 -1
- package/dist/enum/index.js +0 -23
- package/dist/enum/index.js.map +0 -1
- package/dist/enum/login-status.enum.d.ts +0 -5
- package/dist/enum/login-status.enum.d.ts.map +0 -1
- package/dist/enum/login-status.enum.js +0 -9
- package/dist/enum/login-status.enum.js.map +0 -1
- package/dist/enum/object-status.enum.d.ts +0 -5
- package/dist/enum/object-status.enum.d.ts.map +0 -1
- package/dist/enum/object-status.enum.js +0 -9
- package/dist/enum/object-status.enum.js.map +0 -1
- package/dist/enum/user-status.enum.d.ts +0 -8
- package/dist/enum/user-status.enum.d.ts.map +0 -1
- package/dist/enum/user-status.enum.js +0 -12
- package/dist/enum/user-status.enum.js.map +0 -1
- package/dist/enum/yn.enum.d.ts +0 -5
- package/dist/enum/yn.enum.d.ts.map +0 -1
- package/dist/enum/yn.enum.js +0 -9
- package/dist/enum/yn.enum.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/interfaces/api-key-attr.interface.d.ts +0 -16
- package/dist/interfaces/api-key-attr.interface.d.ts.map +0 -1
- package/dist/interfaces/api-key-attr.interface.js +0 -3
- package/dist/interfaces/api-key-attr.interface.js.map +0 -1
- package/dist/interfaces/group-object-privilege.interface.d.ts +0 -14
- package/dist/interfaces/group-object-privilege.interface.d.ts.map +0 -1
- package/dist/interfaces/group-object-privilege.interface.js +0 -3
- package/dist/interfaces/group-object-privilege.interface.js.map +0 -1
- package/dist/interfaces/group-privilege.interface.d.ts +0 -11
- package/dist/interfaces/group-privilege.interface.d.ts.map +0 -1
- package/dist/interfaces/group-privilege.interface.js +0 -3
- package/dist/interfaces/group-privilege.interface.js.map +0 -1
- package/dist/interfaces/group-reporting-user.interface.d.ts +0 -12
- package/dist/interfaces/group-reporting-user.interface.d.ts.map +0 -1
- package/dist/interfaces/group-reporting-user.interface.js +0 -3
- package/dist/interfaces/group-reporting-user.interface.js.map +0 -1
- package/dist/interfaces/group-search-attr.interface.d.ts +0 -9
- package/dist/interfaces/group-search-attr.interface.d.ts.map +0 -1
- package/dist/interfaces/group-search-attr.interface.js +0 -3
- package/dist/interfaces/group-search-attr.interface.js.map +0 -1
- package/dist/interfaces/group-system-access.interface.d.ts +0 -11
- package/dist/interfaces/group-system-access.interface.d.ts.map +0 -1
- package/dist/interfaces/group-system-access.interface.js +0 -3
- package/dist/interfaces/group-system-access.interface.js.map +0 -1
- package/dist/interfaces/group.interface.d.ts +0 -17
- package/dist/interfaces/group.interface.d.ts.map +0 -1
- package/dist/interfaces/group.interface.js +0 -3
- package/dist/interfaces/group.interface.js.map +0 -1
- package/dist/interfaces/index.d.ts +0 -14
- package/dist/interfaces/index.d.ts.map +0 -1
- package/dist/interfaces/index.js +0 -30
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/system-login.interface.d.ts +0 -7
- package/dist/interfaces/system-login.interface.d.ts.map +0 -1
- package/dist/interfaces/system-login.interface.js +0 -3
- package/dist/interfaces/system-login.interface.js.map +0 -1
- package/dist/interfaces/system-privilege-search.interface.d.ts +0 -6
- package/dist/interfaces/system-privilege-search.interface.d.ts.map +0 -1
- package/dist/interfaces/system-privilege-search.interface.js +0 -3
- package/dist/interfaces/system-privilege-search.interface.js.map +0 -1
- package/dist/interfaces/system-privilege.interface.d.ts +0 -12
- package/dist/interfaces/system-privilege.interface.d.ts.map +0 -1
- package/dist/interfaces/system-privilege.interface.js +0 -3
- package/dist/interfaces/system-privilege.interface.js.map +0 -1
- package/dist/interfaces/system-search-attr.interface.d.ts +0 -6
- package/dist/interfaces/system-search-attr.interface.d.ts.map +0 -1
- package/dist/interfaces/system-search-attr.interface.js +0 -3
- package/dist/interfaces/system-search-attr.interface.js.map +0 -1
- package/dist/interfaces/system.interface.d.ts +0 -16
- package/dist/interfaces/system.interface.d.ts.map +0 -1
- package/dist/interfaces/system.interface.js +0 -3
- package/dist/interfaces/system.interface.js.map +0 -1
- package/dist/interfaces/user-group.interface.d.ts +0 -13
- package/dist/interfaces/user-group.interface.d.ts.map +0 -1
- package/dist/interfaces/user-group.interface.js +0 -3
- package/dist/interfaces/user-group.interface.js.map +0 -1
- package/dist/interfaces/user-object-privilege.interface.d.ts +0 -14
- package/dist/interfaces/user-object-privilege.interface.d.ts.map +0 -1
- package/dist/interfaces/user-object-privilege.interface.js +0 -3
- package/dist/interfaces/user-object-privilege.interface.js.map +0 -1
- package/dist/interfaces/user-privilege.interface.d.ts +0 -11
- package/dist/interfaces/user-privilege.interface.d.ts.map +0 -1
- package/dist/interfaces/user-privilege.interface.js +0 -3
- package/dist/interfaces/user-privilege.interface.js.map +0 -1
- package/dist/interfaces/user-session.interface.d.ts +0 -5
- package/dist/interfaces/user-session.interface.d.ts.map +0 -1
- package/dist/interfaces/user-session.interface.js +0 -3
- package/dist/interfaces/user-session.interface.js.map +0 -1
- package/dist/interfaces/user-system-access.interface.d.ts +0 -11
- package/dist/interfaces/user-system-access.interface.d.ts.map +0 -1
- package/dist/interfaces/user-system-access.interface.js +0 -3
- package/dist/interfaces/user-system-access.interface.js.map +0 -1
- package/dist/models/api-key-entity.d.ts +0 -22
- package/dist/models/api-key-entity.d.ts.map +0 -1
- package/dist/models/api-key-entity.js +0 -125
- package/dist/models/api-key-entity.js.map +0 -1
- package/dist/models/building.entity.d.ts +0 -30
- package/dist/models/building.entity.d.ts.map +0 -1
- package/dist/models/building.entity.js +0 -216
- package/dist/models/building.entity.js.map +0 -1
- package/dist/models/group-object-privilege.entity.d.ts +0 -22
- package/dist/models/group-object-privilege.entity.d.ts.map +0 -1
- package/dist/models/group-object-privilege.entity.js +0 -114
- package/dist/models/group-object-privilege.entity.js.map +0 -1
- package/dist/models/group-privilege.entity.d.ts +0 -19
- package/dist/models/group-privilege.entity.d.ts.map +0 -1
- package/dist/models/group-privilege.entity.js +0 -99
- package/dist/models/group-privilege.entity.js.map +0 -1
- package/dist/models/group-reporting-user.entity.d.ts +0 -18
- package/dist/models/group-reporting-user.entity.d.ts.map +0 -1
- package/dist/models/group-reporting-user.entity.js +0 -117
- package/dist/models/group-reporting-user.entity.js.map +0 -1
- package/dist/models/group-system-access.entity.d.ts +0 -19
- package/dist/models/group-system-access.entity.d.ts.map +0 -1
- package/dist/models/group-system-access.entity.js +0 -102
- package/dist/models/group-system-access.entity.js.map +0 -1
- package/dist/models/group.entity.d.ts +0 -33
- package/dist/models/group.entity.d.ts.map +0 -1
- package/dist/models/group.entity.js +0 -157
- package/dist/models/group.entity.js.map +0 -1
- package/dist/models/login-history.entity.d.ts +0 -15
- package/dist/models/login-history.entity.d.ts.map +0 -1
- package/dist/models/login-history.entity.js +0 -81
- package/dist/models/login-history.entity.js.map +0 -1
- package/dist/models/staff.entity.d.ts +0 -19
- package/dist/models/staff.entity.d.ts.map +0 -1
- package/dist/models/staff.entity.js +0 -113
- package/dist/models/staff.entity.js.map +0 -1
- package/dist/models/system-privilege.entity.d.ts +0 -19
- package/dist/models/system-privilege.entity.d.ts.map +0 -1
- package/dist/models/system-privilege.entity.js +0 -111
- package/dist/models/system-privilege.entity.js.map +0 -1
- package/dist/models/system.entity.d.ts +0 -26
- package/dist/models/system.entity.d.ts.map +0 -1
- package/dist/models/system.entity.js +0 -139
- package/dist/models/system.entity.js.map +0 -1
- package/dist/models/user-group.entity.d.ts +0 -20
- package/dist/models/user-group.entity.d.ts.map +0 -1
- package/dist/models/user-group.entity.js +0 -114
- package/dist/models/user-group.entity.js.map +0 -1
- package/dist/models/user-object-privilege.entity.d.ts +0 -21
- package/dist/models/user-object-privilege.entity.d.ts.map +0 -1
- package/dist/models/user-object-privilege.entity.js +0 -113
- package/dist/models/user-object-privilege.entity.js.map +0 -1
- package/dist/models/user-privilege.entity.d.ts +0 -18
- package/dist/models/user-privilege.entity.d.ts.map +0 -1
- package/dist/models/user-privilege.entity.js +0 -99
- package/dist/models/user-privilege.entity.js.map +0 -1
- package/dist/models/user-system-access.entity.d.ts +0 -18
- package/dist/models/user-system-access.entity.d.ts.map +0 -1
- package/dist/models/user-system-access.entity.js +0 -108
- package/dist/models/user-system-access.entity.js.map +0 -1
- package/dist/models/user.entity.d.ts +0 -41
- package/dist/models/user.entity.d.ts.map +0 -1
- package/dist/models/user.entity.js +0 -218
- package/dist/models/user.entity.js.map +0 -1
- package/dist/redis-client/__mocks__/jest-initial-setup.d.ts +0 -2
- package/dist/redis-client/__mocks__/jest-initial-setup.d.ts.map +0 -1
- package/dist/redis-client/__mocks__/jest-initial-setup.js +0 -8
- package/dist/redis-client/__mocks__/jest-initial-setup.js.map +0 -1
- package/dist/redis-client/__mocks__/redis-mock.d.ts +0 -3
- package/dist/redis-client/__mocks__/redis-mock.d.ts.map +0 -1
- package/dist/redis-client/__mocks__/redis-mock.js +0 -56
- package/dist/redis-client/__mocks__/redis-mock.js.map +0 -1
- package/dist/redis-client/index.d.ts +0 -2
- package/dist/redis-client/index.d.ts.map +0 -1
- package/dist/redis-client/index.js +0 -18
- package/dist/redis-client/index.js.map +0 -1
- package/dist/redis-client/redis.service.d.ts +0 -10
- package/dist/redis-client/redis.service.d.ts.map +0 -1
- package/dist/redis-client/redis.service.js +0 -69
- package/dist/redis-client/redis.service.js.map +0 -1
- package/dist/session/index.d.ts +0 -3
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/index.js +0 -19
- package/dist/session/index.js.map +0 -1
- package/dist/session/interfaces/index.d.ts +0 -2
- package/dist/session/interfaces/index.d.ts.map +0 -1
- package/dist/session/interfaces/index.js +0 -18
- package/dist/session/interfaces/index.js.map +0 -1
- package/dist/session/interfaces/session-service.interface.d.ts +0 -10
- package/dist/session/interfaces/session-service.interface.d.ts.map +0 -1
- package/dist/session/interfaces/session-service.interface.js +0 -3
- package/dist/session/interfaces/session-service.interface.js.map +0 -1
- package/dist/session/session.service.d.ts +0 -14
- package/dist/session/session.service.d.ts.map +0 -1
- package/dist/session/session.service.js +0 -73
- package/dist/session/session.service.js.map +0 -1
- package/dist/types/auth-context.d.ts +0 -7
- package/dist/types/auth-context.d.ts.map +0 -1
- package/dist/types/auth-context.js +0 -3
- package/dist/types/auth-context.js.map +0 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -18
- 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
|
+
}
|