@tomei/sso 0.27.0 → 0.28.3

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 (120) hide show
  1. package/__tests__/unit/components/system-privilege/system-privilege.spec.ts +0 -3
  2. package/coverage/clover.xml +1452 -1452
  3. package/coverage/coverage-final.json +47 -47
  4. package/coverage/lcov-report/base.css +224 -224
  5. package/coverage/lcov-report/block-navigation.js +87 -87
  6. package/coverage/lcov-report/components/group/group.repository.ts.html +117 -117
  7. package/coverage/lcov-report/components/group/group.ts.html +327 -327
  8. package/coverage/lcov-report/components/group/index.html +130 -130
  9. package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.repository.ts.html +117 -117
  10. package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.ts.html +321 -321
  11. package/coverage/lcov-report/components/group-object-privilege/index.html +130 -130
  12. package/coverage/lcov-report/components/group-privilege/group-privilege.repository.ts.html +117 -117
  13. package/coverage/lcov-report/components/group-privilege/group-privilege.ts.html +303 -303
  14. package/coverage/lcov-report/components/group-privilege/index.html +130 -130
  15. package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.repository.ts.html +117 -117
  16. package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.ts.html +327 -327
  17. package/coverage/lcov-report/components/group-reporting-user/index.html +130 -130
  18. package/coverage/lcov-report/components/group-system-access/group-system-access.repository.ts.html +117 -117
  19. package/coverage/lcov-report/components/group-system-access/group-system-access.ts.html +309 -309
  20. package/coverage/lcov-report/components/group-system-access/index.html +130 -130
  21. package/coverage/lcov-report/components/login-history/index.html +115 -115
  22. package/coverage/lcov-report/components/login-history/login-history.repository.ts.html +117 -117
  23. package/coverage/lcov-report/components/login-user/index.html +130 -130
  24. package/coverage/lcov-report/components/login-user/login-user.ts.html +5007 -5007
  25. package/coverage/lcov-report/components/login-user/user.repository.ts.html +117 -117
  26. package/coverage/lcov-report/components/password-hash/index.html +115 -115
  27. package/coverage/lcov-report/components/password-hash/password-hash.service.ts.html +126 -126
  28. package/coverage/lcov-report/components/system/index.html +130 -130
  29. package/coverage/lcov-report/components/system/system.repository.ts.html +117 -117
  30. package/coverage/lcov-report/components/system/system.ts.html +909 -909
  31. package/coverage/lcov-report/components/system-privilege/index.html +130 -130
  32. package/coverage/lcov-report/components/system-privilege/system-privilege.repository.ts.html +120 -120
  33. package/coverage/lcov-report/components/system-privilege/system-privilege.ts.html +390 -390
  34. package/coverage/lcov-report/components/user-group/index.html +130 -130
  35. package/coverage/lcov-report/components/user-group/user-group.repository.ts.html +117 -117
  36. package/coverage/lcov-report/components/user-group/user-group.ts.html +354 -354
  37. package/coverage/lcov-report/components/user-object-privilege/index.html +130 -130
  38. package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.repository.ts.html +117 -117
  39. package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.ts.html +312 -312
  40. package/coverage/lcov-report/components/user-privilege/index.html +130 -130
  41. package/coverage/lcov-report/components/user-privilege/user-privilege.repository.ts.html +117 -117
  42. package/coverage/lcov-report/components/user-privilege/user-privilege.ts.html +306 -306
  43. package/coverage/lcov-report/components/user-system-access/index.html +130 -130
  44. package/coverage/lcov-report/components/user-system-access/user-system-access.repository.ts.html +117 -117
  45. package/coverage/lcov-report/components/user-system-access/user-system-access.ts.html +312 -312
  46. package/coverage/lcov-report/enum/group-type.enum.ts.html +108 -108
  47. package/coverage/lcov-report/enum/index.html +160 -160
  48. package/coverage/lcov-report/enum/index.ts.html +93 -93
  49. package/coverage/lcov-report/enum/user-status.enum.ts.html +105 -105
  50. package/coverage/lcov-report/enum/yn.enum.ts.html +96 -96
  51. package/coverage/lcov-report/index.html +370 -370
  52. package/coverage/lcov-report/models/group-object-privilege.entity.ts.html +333 -333
  53. package/coverage/lcov-report/models/group-privilege.entity.ts.html +315 -315
  54. package/coverage/lcov-report/models/group-reporting-user.entity.ts.html +339 -339
  55. package/coverage/lcov-report/models/group-system-access.entity.ts.html +324 -324
  56. package/coverage/lcov-report/models/group.entity.ts.html +435 -435
  57. package/coverage/lcov-report/models/index.html +310 -310
  58. package/coverage/lcov-report/models/login-history.entity.ts.html +252 -252
  59. package/coverage/lcov-report/models/staff.entity.ts.html +411 -411
  60. package/coverage/lcov-report/models/system-privilege.entity.ts.html +354 -354
  61. package/coverage/lcov-report/models/system.entity.ts.html +423 -423
  62. package/coverage/lcov-report/models/user-group.entity.ts.html +354 -354
  63. package/coverage/lcov-report/models/user-object-privilege.entity.ts.html +330 -330
  64. package/coverage/lcov-report/models/user-privilege.entity.ts.html +315 -315
  65. package/coverage/lcov-report/models/user-system-access.entity.ts.html +315 -315
  66. package/coverage/lcov-report/models/user.entity.ts.html +522 -522
  67. package/coverage/lcov-report/prettify.css +1 -1
  68. package/coverage/lcov-report/prettify.js +2 -2
  69. package/coverage/lcov-report/redis-client/index.html +115 -115
  70. package/coverage/lcov-report/redis-client/redis.service.ts.html +240 -240
  71. package/coverage/lcov-report/session/index.html +115 -115
  72. package/coverage/lcov-report/session/session.service.ts.html +246 -246
  73. package/coverage/lcov-report/sorter.js +196 -196
  74. package/coverage/lcov.info +2490 -2490
  75. package/coverage/test-report.xml +128 -128
  76. package/dist/__tests__/unit/components/system-privilege/system-privilege.spec.js +0 -3
  77. package/dist/__tests__/unit/components/system-privilege/system-privilege.spec.js.map +1 -1
  78. package/dist/src/components/login-user/interfaces/check-user-info-duplicated.interface.d.ts +1 -0
  79. package/dist/src/components/login-user/interfaces/user-info.interface.d.ts +1 -0
  80. package/dist/src/components/login-user/login-user.d.ts +4 -2
  81. package/dist/src/components/login-user/login-user.js +33 -7
  82. package/dist/src/components/login-user/login-user.js.map +1 -1
  83. package/dist/src/components/system-privilege/system-privilege.d.ts +0 -2
  84. package/dist/src/components/system-privilege/system-privilege.js +0 -8
  85. package/dist/src/components/system-privilege/system-privilege.js.map +1 -1
  86. package/dist/src/enum/index.d.ts +1 -0
  87. package/dist/src/enum/index.js +1 -0
  88. package/dist/src/enum/index.js.map +1 -1
  89. package/dist/src/enum/login-status.enum.d.ts +4 -0
  90. package/dist/src/enum/login-status.enum.js +9 -0
  91. package/dist/src/enum/login-status.enum.js.map +1 -0
  92. package/dist/src/interfaces/system-privilege.interface.d.ts +0 -1
  93. package/dist/src/models/login-history.entity.d.ts +2 -0
  94. package/dist/src/models/login-history.entity.js +8 -0
  95. package/dist/src/models/login-history.entity.js.map +1 -1
  96. package/dist/src/models/system-privilege.entity.d.ts +0 -1
  97. package/dist/src/models/system-privilege.entity.js +1 -9
  98. package/dist/src/models/system-privilege.entity.js.map +1 -1
  99. package/dist/src/models/user.entity.d.ts +1 -0
  100. package/dist/src/models/user.entity.js +7 -0
  101. package/dist/src/models/user.entity.js.map +1 -1
  102. package/dist/tsconfig.tsbuildinfo +1 -1
  103. package/migrations/20240314080602-create-user-table.js +4 -0
  104. package/migrations/20240314080605-create-login-history-table.js +4 -0
  105. package/migrations/20240527064926-create-system-privilege-table.js +1 -5
  106. package/migrations/20240528023018-user-system-access-table.js +75 -75
  107. package/migrations/20240528032229-user-privilege-table.js +75 -75
  108. package/migrations/20240528063003-create-group-privilege-table.js +75 -75
  109. package/migrations/20240528063107-create-user-object-privilege-table.js +83 -83
  110. package/package.json +1 -1
  111. package/src/components/login-user/interfaces/check-user-info-duplicated.interface.ts +1 -0
  112. package/src/components/login-user/interfaces/user-info.interface.ts +1 -0
  113. package/src/components/login-user/login-user.ts +39 -8
  114. package/src/components/system-privilege/system-privilege.ts +0 -10
  115. package/src/enum/index.ts +1 -0
  116. package/src/enum/login-status.enum.ts +4 -0
  117. package/src/interfaces/system-privilege.interface.ts +0 -1
  118. package/src/models/login-history.entity.ts +7 -0
  119. package/src/models/system-privilege.entity.ts +1 -8
  120. package/src/models/user.entity.ts +6 -0
@@ -1,129 +1,129 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <testExecutions version="1">
3
- <file path="C:\Work\sso\__tests__\unit\components\login-user\login.spec.ts">
4
- <testCase name="LoginUser init should initialize LoginUser with valid userId" duration="5"/>
5
- <testCase name="LoginUser init should throw an error when user is not found" duration="20"/>
6
- <testCase name="LoginUser checkSession should throw an error if session expired" duration="20"/>
7
- <testCase name="LoginUser checkSession should refresh the session duration if session is valid" duration="2"/>
8
- <testCase name="LoginUser shouldReleaseLock should return true if autoReleaseYN is &quot;Y&quot; and time difference is greater than minuteToAutoRelease" duration="2"/>
9
- <testCase name="LoginUser shouldReleaseLock should return false if autoReleaseYN is &quot;Y&quot; and time difference is less than or equal to minuteToAutoRelease" duration="1"/>
10
- <testCase name="LoginUser shouldReleaseLock should return false if autoReleaseYN is &quot;N&quot;" duration="1"/>
11
- <testCase name="LoginUser releaseLock should release the lock for a user" duration="1"/>
12
- <testCase name="LoginUser checkUserInfoDuplicated should throw an error if duplicate user info is found" duration="1"/>
13
- <testCase name="LoginUser checkUserInfoDuplicated should not throw an error if duplicate user info is not found" duration="0"/>
14
- <testCase name="LoginUser generateDefaultPassword should generate a default password with the specified length" duration="2"/>
15
- <testCase name="LoginUser generateDefaultPassword should generate a default password with at least one capital letter" duration="1"/>
16
- <testCase name="LoginUser generateDefaultPassword should generate a default password with at least one number" duration="1"/>
17
- <testCase name="LoginUser generateDefaultPassword should generate a default password with at least one special character" duration="1"/>
18
- <testCase name="LoginUser generateDefaultPassword should generate a default password without any non-acceptable characters" duration="1"/>
19
- <testCase name="LoginUser setPassword should set the password for the user" duration="159"/>
20
- <testCase name="LoginUser setPassword should throw an error if the password does not meet the security requirements" duration="13"/>
21
- <testCase name="LoginUser create should create a new user record" duration="5"/>
22
- <testCase name="LoginUser create should throw an error if user dont have the privilege to create new user" duration="2"/>
23
- <testCase name="LoginUser create should throw an error if user email is missing" duration="2"/>
24
- <testCase name="LoginUser incrementFailedLoginAttemptCount should increment FailedLoginAttemptCount and update user status" duration="1"/>
25
- <testCase name="LoginUser incrementFailedLoginAttemptCount should throw an error if maxFailedLoginAttempts or autoReleaseYN is missing" duration="1"/>
26
- <testCase name="LoginUser incrementFailedLoginAttemptCount should lock the user account if the failed login attempts exceed the maximum allowed" duration="1"/>
27
- <testCase name="LoginUser incrementFailedLoginAttemptCount should permanently lock the user account if the failed login attempts exceed the maximum allowed and autoReleaseYN is N" duration="1"/>
28
- <testCase name="LoginUser combineSystemAccess should combine user and group system access and remove duplicates" duration="1"/>
29
- <testCase name="LoginUser checkPrivileges should return true if user has the specified privilege" duration="1"/>
30
- <testCase name="LoginUser checkPrivileges should return false if user does not have the specified privilege" duration="1"/>
31
- <testCase name="LoginUser checkPrivileges should throw an error if ObjectId is not set" duration="1"/>
32
- <testCase name="LoginUser getObjectPrivileges should return an array of privileges" duration="1"/>
33
- <testCase name="LoginUser getObjectPrivileges should throw an error if an exception occurs" duration="1"/>
34
- <testCase name="LoginUser getUserPersonalPrivileges should return an array of privileges" duration="2"/>
35
- <testCase name="LoginUser getUserPersonalPrivileges should throw an error if an error occurs" duration="1"/>
36
- <testCase name="LoginUser getInheritedSystemAccess should return group system access with its parent group system access if applicable" duration="3"/>
37
- </file>
38
- <file path="C:\Work\sso\__tests__\unit\components\system\system.spec.ts">
39
- <testCase name="System init should initialize a system when SystemCode is provided" duration="3"/>
40
- <testCase name="System init should throw an error when SystemCode is not found" duration="8"/>
41
- <testCase name="System init should initialize a new system when SystemCode is not provided" duration="1"/>
42
- <testCase name="System createSystem should create a new system" duration="4"/>
43
- <testCase name="System createSystem should throw an error when user does not have permission" duration="1"/>
44
- <testCase name="System createSystem should throw an error when SystemCode is missing" duration="1"/>
45
- <testCase name="System createSystem should throw an error when Name is missing" duration="1"/>
46
- <testCase name="System createSystem should throw an error when Description is missing" duration="1"/>
47
- <testCase name="System createSystem should throw an error when failed to create system" duration="5"/>
48
- <testCase name="System setSystemCode should set the SystemCode when there is no duplicate" duration="1"/>
49
- <testCase name="System setSystemCode should throw an error when SystemCode already exists" duration="1"/>
50
- <testCase name="System setSystemCode should throw an error when failed to check duplicate SystemCode" duration="1"/>
51
- <testCase name="System findAll should find all systems based on filter" duration="2"/>
52
- <testCase name="System findAll should find all systems without pagination when page and rows are not provided" duration="1"/>
53
- </file>
54
- <file path="C:\Work\sso\__tests__\unit\components\group-object-privilege\group-object-privilege.spec.ts">
55
- <testCase name="GroupObjectPrivilege should create an instance of GroupObjectPrivilege" duration="2"/>
56
- <testCase name="GroupObjectPrivilege should have the correct TableName" duration="0"/>
57
- <testCase name="GroupObjectPrivilege should have the correct properties" duration="1"/>
58
- <testCase name="GroupObjectPrivilege init should return an instance of GroupObjectPrivilege when GroupObjectPrivilegeId is provided" duration="2"/>
59
- <testCase name="GroupObjectPrivilege init should throw an error when GroupObjectPrivilegeId is provided but no GroupObjectPrivilege is found" duration="3"/>
60
- <testCase name="GroupObjectPrivilege init should return a new instance of GroupObjectPrivilege when GroupObjectPrivilegeId is not provided" duration="3"/>
61
- </file>
62
- <file path="C:\Work\sso\__tests__\unit\components\group-system-access\group-system-access.spec.ts">
63
- <testCase name="GroupSystemAccess should create a new GroupSystemAccess instance" duration="2"/>
64
- <testCase name="GroupSystemAccess init should initialize GroupSystemAccess without GroupSystemAccessId" duration="2"/>
65
- <testCase name="GroupSystemAccess init should initialize GroupSystemAccess with GroupSystemAccessId" duration="3"/>
66
- <testCase name="GroupSystemAccess init should throw an error if GroupSystemAccessId is not found" duration="5"/>
67
- </file>
68
- <file path="C:\Work\sso\__tests__\unit\components\group\group.spec.ts">
69
- <testCase name="Group should initialize a group with valid GroupCode" duration="4"/>
70
- <testCase name="Group should throw an error when initializing a group with invalid GroupCode" duration="5"/>
71
- <testCase name="Group should throw an error when initializing a group with an error" duration="2"/>
72
- </file>
73
- <file path="C:\Work\sso\__tests__\unit\components\group-reporting-user\group-reporting-user.spec.ts">
74
- <testCase name="GroupReportingUser init should initialize GroupReportingUser without GroupReportingUserId" duration="3"/>
75
- <testCase name="GroupReportingUser init should initialize GroupReportingUser with valid GroupReportingUserId" duration="2"/>
76
- <testCase name="GroupReportingUser init should throw ClassError when GroupReportingUser is not found" duration="8"/>
77
- <testCase name="GroupReportingUser init should throw ClassError when failed to initialize GroupReportingUser" duration="1"/>
78
- </file>
79
- <file path="C:\Work\sso\__tests__\unit\components\system-privilege\system-privilege.spec.ts">
80
- <testCase name="SystemPrivilege constructor should create a new SystemPrivilege instance" duration="2"/>
81
- <testCase name="SystemPrivilege init should initialize SystemPrivilege without PrivilegeCode" duration="1"/>
82
- <testCase name="SystemPrivilege init should initialize SystemPrivilege with PrivilegeCode" duration="2"/>
83
- <testCase name="SystemPrivilege init should throw an error if PrivilegeCode is not found" duration="4"/>
84
- </file>
85
- <file path="C:\Work\sso\__tests__\unit\components\user-group\user-group.spec.ts">
86
- <testCase name="UserGroup constructor should create a new UserGroup instance" duration="3"/>
87
- <testCase name="UserGroup init should initialize UserGroup with valid UserGroupId" duration="2"/>
88
- <testCase name="UserGroup init should throw ClassError when UserGroupId is not found" duration="5"/>
89
- </file>
90
- <file path="C:\Work\sso\__tests__\unit\components\user-object-privilege\user-object-privilege.spec.ts">
91
- <testCase name="UserObjectPrivilege constructor should create a new UserObjectPrivilege instance" duration="2"/>
92
- <testCase name="UserObjectPrivilege init should initialize UserObjectPrivilege with valid ObjectPrivilegeId" duration="5"/>
93
- <testCase name="UserObjectPrivilege init should throw ClassError when ObjectPrivilegeId is not found" duration="4"/>
94
- </file>
95
- <file path="C:\Work\sso\__tests__\unit\components\group-privilege\group-privilege.spec.ts">
96
- <testCase name="GroupPrivilege should initialize with GroupPrivilegeAttr" duration="6"/>
97
- <testCase name="GroupPrivilege should throw ClassError when GroupPrivilegeAttr is not found" duration="4"/>
98
- <testCase name="GroupPrivilege should initialize with default values" duration="1"/>
99
- </file>
100
- <file path="C:\Work\sso\__tests__\unit\components\user-system-access\user-system-access.spec.ts">
101
- <testCase name="UserSystemAccess constructor should create a new UserSystemAccess instance" duration="2"/>
102
- <testCase name="UserSystemAccess init should initialize UserSystemAccess with valid UserSystemAccessId" duration="2"/>
103
- <testCase name="UserSystemAccess init should throw ClassError when UserSystemAccessId is not found" duration="1"/>
104
- </file>
105
- <file path="C:\Work\sso\__tests__\unit\components\user-privilege\user-privilege.spec.ts">
106
- <testCase name="UserPrivilege constructor should create a new UserPrivilege instance" duration="2"/>
107
- <testCase name="UserPrivilege init should initialize UserPrivilege with valid UserPrivilegeId" duration="2"/>
108
- <testCase name="UserPrivilege init should throw ClassError when UserPrivilegeId is not found" duration="4"/>
109
- </file>
110
- <file path="C:\Work\sso\__tests__\unit\session\session.service.spec.ts">
111
- <testCase name="session.service should return session service when instansiated" duration="2"/>
112
- <testCase name="session.service should able to write session data" duration="3"/>
113
- <testCase name="session.service should able to refresh session data" duration="3"/>
114
- </file>
115
- <file path="C:\Work\sso\__tests__\unit\system-privilege\system-privilage.spec.ts">
116
- <testCase name="SystemPrivilege should be true" duration="2"/>
117
- </file>
118
- <file path="C:\Work\sso\__tests__\unit\components\password-hash\password-hash.service.spec.ts">
119
- <testCase name="password-hash.service should return hash password" duration="2"/>
120
- <testCase name="password-hash.service should return true when verify password" duration="1"/>
121
- </file>
122
- <file path="C:\Work\sso\__tests__\unit\redis-client\redis.service.spec.ts">
123
- <testCase name="redis.service should return redis service when instansiated" duration="1"/>
124
- <testCase name="redis.service should able to write and read redis" duration="2"/>
125
- </file>
126
- <file path="C:\Work\sso\__tests__\unit\components\login-user\l.spec.ts">
127
- <testCase name="SystemPrivilege should be true" duration="1"/>
128
- </file>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <testExecutions version="1">
3
+ <file path="C:\Work\sso\__tests__\unit\components\login-user\login.spec.ts">
4
+ <testCase name="LoginUser init should initialize LoginUser with valid userId" duration="5"/>
5
+ <testCase name="LoginUser init should throw an error when user is not found" duration="20"/>
6
+ <testCase name="LoginUser checkSession should throw an error if session expired" duration="20"/>
7
+ <testCase name="LoginUser checkSession should refresh the session duration if session is valid" duration="2"/>
8
+ <testCase name="LoginUser shouldReleaseLock should return true if autoReleaseYN is &quot;Y&quot; and time difference is greater than minuteToAutoRelease" duration="2"/>
9
+ <testCase name="LoginUser shouldReleaseLock should return false if autoReleaseYN is &quot;Y&quot; and time difference is less than or equal to minuteToAutoRelease" duration="1"/>
10
+ <testCase name="LoginUser shouldReleaseLock should return false if autoReleaseYN is &quot;N&quot;" duration="1"/>
11
+ <testCase name="LoginUser releaseLock should release the lock for a user" duration="1"/>
12
+ <testCase name="LoginUser checkUserInfoDuplicated should throw an error if duplicate user info is found" duration="1"/>
13
+ <testCase name="LoginUser checkUserInfoDuplicated should not throw an error if duplicate user info is not found" duration="0"/>
14
+ <testCase name="LoginUser generateDefaultPassword should generate a default password with the specified length" duration="2"/>
15
+ <testCase name="LoginUser generateDefaultPassword should generate a default password with at least one capital letter" duration="1"/>
16
+ <testCase name="LoginUser generateDefaultPassword should generate a default password with at least one number" duration="1"/>
17
+ <testCase name="LoginUser generateDefaultPassword should generate a default password with at least one special character" duration="1"/>
18
+ <testCase name="LoginUser generateDefaultPassword should generate a default password without any non-acceptable characters" duration="1"/>
19
+ <testCase name="LoginUser setPassword should set the password for the user" duration="159"/>
20
+ <testCase name="LoginUser setPassword should throw an error if the password does not meet the security requirements" duration="13"/>
21
+ <testCase name="LoginUser create should create a new user record" duration="5"/>
22
+ <testCase name="LoginUser create should throw an error if user dont have the privilege to create new user" duration="2"/>
23
+ <testCase name="LoginUser create should throw an error if user email is missing" duration="2"/>
24
+ <testCase name="LoginUser incrementFailedLoginAttemptCount should increment FailedLoginAttemptCount and update user status" duration="1"/>
25
+ <testCase name="LoginUser incrementFailedLoginAttemptCount should throw an error if maxFailedLoginAttempts or autoReleaseYN is missing" duration="1"/>
26
+ <testCase name="LoginUser incrementFailedLoginAttemptCount should lock the user account if the failed login attempts exceed the maximum allowed" duration="1"/>
27
+ <testCase name="LoginUser incrementFailedLoginAttemptCount should permanently lock the user account if the failed login attempts exceed the maximum allowed and autoReleaseYN is N" duration="1"/>
28
+ <testCase name="LoginUser combineSystemAccess should combine user and group system access and remove duplicates" duration="1"/>
29
+ <testCase name="LoginUser checkPrivileges should return true if user has the specified privilege" duration="1"/>
30
+ <testCase name="LoginUser checkPrivileges should return false if user does not have the specified privilege" duration="1"/>
31
+ <testCase name="LoginUser checkPrivileges should throw an error if ObjectId is not set" duration="1"/>
32
+ <testCase name="LoginUser getObjectPrivileges should return an array of privileges" duration="1"/>
33
+ <testCase name="LoginUser getObjectPrivileges should throw an error if an exception occurs" duration="1"/>
34
+ <testCase name="LoginUser getUserPersonalPrivileges should return an array of privileges" duration="2"/>
35
+ <testCase name="LoginUser getUserPersonalPrivileges should throw an error if an error occurs" duration="1"/>
36
+ <testCase name="LoginUser getInheritedSystemAccess should return group system access with its parent group system access if applicable" duration="3"/>
37
+ </file>
38
+ <file path="C:\Work\sso\__tests__\unit\components\system\system.spec.ts">
39
+ <testCase name="System init should initialize a system when SystemCode is provided" duration="3"/>
40
+ <testCase name="System init should throw an error when SystemCode is not found" duration="8"/>
41
+ <testCase name="System init should initialize a new system when SystemCode is not provided" duration="1"/>
42
+ <testCase name="System createSystem should create a new system" duration="4"/>
43
+ <testCase name="System createSystem should throw an error when user does not have permission" duration="1"/>
44
+ <testCase name="System createSystem should throw an error when SystemCode is missing" duration="1"/>
45
+ <testCase name="System createSystem should throw an error when Name is missing" duration="1"/>
46
+ <testCase name="System createSystem should throw an error when Description is missing" duration="1"/>
47
+ <testCase name="System createSystem should throw an error when failed to create system" duration="5"/>
48
+ <testCase name="System setSystemCode should set the SystemCode when there is no duplicate" duration="1"/>
49
+ <testCase name="System setSystemCode should throw an error when SystemCode already exists" duration="1"/>
50
+ <testCase name="System setSystemCode should throw an error when failed to check duplicate SystemCode" duration="1"/>
51
+ <testCase name="System findAll should find all systems based on filter" duration="2"/>
52
+ <testCase name="System findAll should find all systems without pagination when page and rows are not provided" duration="1"/>
53
+ </file>
54
+ <file path="C:\Work\sso\__tests__\unit\components\group-object-privilege\group-object-privilege.spec.ts">
55
+ <testCase name="GroupObjectPrivilege should create an instance of GroupObjectPrivilege" duration="2"/>
56
+ <testCase name="GroupObjectPrivilege should have the correct TableName" duration="0"/>
57
+ <testCase name="GroupObjectPrivilege should have the correct properties" duration="1"/>
58
+ <testCase name="GroupObjectPrivilege init should return an instance of GroupObjectPrivilege when GroupObjectPrivilegeId is provided" duration="2"/>
59
+ <testCase name="GroupObjectPrivilege init should throw an error when GroupObjectPrivilegeId is provided but no GroupObjectPrivilege is found" duration="3"/>
60
+ <testCase name="GroupObjectPrivilege init should return a new instance of GroupObjectPrivilege when GroupObjectPrivilegeId is not provided" duration="3"/>
61
+ </file>
62
+ <file path="C:\Work\sso\__tests__\unit\components\group-system-access\group-system-access.spec.ts">
63
+ <testCase name="GroupSystemAccess should create a new GroupSystemAccess instance" duration="2"/>
64
+ <testCase name="GroupSystemAccess init should initialize GroupSystemAccess without GroupSystemAccessId" duration="2"/>
65
+ <testCase name="GroupSystemAccess init should initialize GroupSystemAccess with GroupSystemAccessId" duration="3"/>
66
+ <testCase name="GroupSystemAccess init should throw an error if GroupSystemAccessId is not found" duration="5"/>
67
+ </file>
68
+ <file path="C:\Work\sso\__tests__\unit\components\group\group.spec.ts">
69
+ <testCase name="Group should initialize a group with valid GroupCode" duration="4"/>
70
+ <testCase name="Group should throw an error when initializing a group with invalid GroupCode" duration="5"/>
71
+ <testCase name="Group should throw an error when initializing a group with an error" duration="2"/>
72
+ </file>
73
+ <file path="C:\Work\sso\__tests__\unit\components\group-reporting-user\group-reporting-user.spec.ts">
74
+ <testCase name="GroupReportingUser init should initialize GroupReportingUser without GroupReportingUserId" duration="3"/>
75
+ <testCase name="GroupReportingUser init should initialize GroupReportingUser with valid GroupReportingUserId" duration="2"/>
76
+ <testCase name="GroupReportingUser init should throw ClassError when GroupReportingUser is not found" duration="8"/>
77
+ <testCase name="GroupReportingUser init should throw ClassError when failed to initialize GroupReportingUser" duration="1"/>
78
+ </file>
79
+ <file path="C:\Work\sso\__tests__\unit\components\system-privilege\system-privilege.spec.ts">
80
+ <testCase name="SystemPrivilege constructor should create a new SystemPrivilege instance" duration="2"/>
81
+ <testCase name="SystemPrivilege init should initialize SystemPrivilege without PrivilegeCode" duration="1"/>
82
+ <testCase name="SystemPrivilege init should initialize SystemPrivilege with PrivilegeCode" duration="2"/>
83
+ <testCase name="SystemPrivilege init should throw an error if PrivilegeCode is not found" duration="4"/>
84
+ </file>
85
+ <file path="C:\Work\sso\__tests__\unit\components\user-group\user-group.spec.ts">
86
+ <testCase name="UserGroup constructor should create a new UserGroup instance" duration="3"/>
87
+ <testCase name="UserGroup init should initialize UserGroup with valid UserGroupId" duration="2"/>
88
+ <testCase name="UserGroup init should throw ClassError when UserGroupId is not found" duration="5"/>
89
+ </file>
90
+ <file path="C:\Work\sso\__tests__\unit\components\user-object-privilege\user-object-privilege.spec.ts">
91
+ <testCase name="UserObjectPrivilege constructor should create a new UserObjectPrivilege instance" duration="2"/>
92
+ <testCase name="UserObjectPrivilege init should initialize UserObjectPrivilege with valid ObjectPrivilegeId" duration="5"/>
93
+ <testCase name="UserObjectPrivilege init should throw ClassError when ObjectPrivilegeId is not found" duration="4"/>
94
+ </file>
95
+ <file path="C:\Work\sso\__tests__\unit\components\group-privilege\group-privilege.spec.ts">
96
+ <testCase name="GroupPrivilege should initialize with GroupPrivilegeAttr" duration="6"/>
97
+ <testCase name="GroupPrivilege should throw ClassError when GroupPrivilegeAttr is not found" duration="4"/>
98
+ <testCase name="GroupPrivilege should initialize with default values" duration="1"/>
99
+ </file>
100
+ <file path="C:\Work\sso\__tests__\unit\components\user-system-access\user-system-access.spec.ts">
101
+ <testCase name="UserSystemAccess constructor should create a new UserSystemAccess instance" duration="2"/>
102
+ <testCase name="UserSystemAccess init should initialize UserSystemAccess with valid UserSystemAccessId" duration="2"/>
103
+ <testCase name="UserSystemAccess init should throw ClassError when UserSystemAccessId is not found" duration="1"/>
104
+ </file>
105
+ <file path="C:\Work\sso\__tests__\unit\components\user-privilege\user-privilege.spec.ts">
106
+ <testCase name="UserPrivilege constructor should create a new UserPrivilege instance" duration="2"/>
107
+ <testCase name="UserPrivilege init should initialize UserPrivilege with valid UserPrivilegeId" duration="2"/>
108
+ <testCase name="UserPrivilege init should throw ClassError when UserPrivilegeId is not found" duration="4"/>
109
+ </file>
110
+ <file path="C:\Work\sso\__tests__\unit\session\session.service.spec.ts">
111
+ <testCase name="session.service should return session service when instansiated" duration="2"/>
112
+ <testCase name="session.service should able to write session data" duration="3"/>
113
+ <testCase name="session.service should able to refresh session data" duration="3"/>
114
+ </file>
115
+ <file path="C:\Work\sso\__tests__\unit\system-privilege\system-privilage.spec.ts">
116
+ <testCase name="SystemPrivilege should be true" duration="2"/>
117
+ </file>
118
+ <file path="C:\Work\sso\__tests__\unit\components\password-hash\password-hash.service.spec.ts">
119
+ <testCase name="password-hash.service should return hash password" duration="2"/>
120
+ <testCase name="password-hash.service should return true when verify password" duration="1"/>
121
+ </file>
122
+ <file path="C:\Work\sso\__tests__\unit\redis-client\redis.service.spec.ts">
123
+ <testCase name="redis.service should return redis service when instansiated" duration="1"/>
124
+ <testCase name="redis.service should able to write and read redis" duration="2"/>
125
+ </file>
126
+ <file path="C:\Work\sso\__tests__\unit\components\login-user\l.spec.ts">
127
+ <testCase name="SystemPrivilege should be true" duration="1"/>
128
+ </file>
129
129
  </testExecutions>
@@ -35,7 +35,6 @@ describe('SystemPrivilege', () => {
35
35
  expect(systemPrivilege).toBeInstanceOf(system_privilege_1.SystemPrivilege);
36
36
  expect(systemPrivilege.PrivilegeCode).toBe(systemPrivilegeAttr.PrivilegeCode);
37
37
  expect(systemPrivilege.SystemCode).toBe(systemPrivilegeAttr.SystemCode);
38
- expect(systemPrivilege.Name).toBe(systemPrivilegeAttr.Name);
39
38
  expect(systemPrivilege.Description).toBe(systemPrivilegeAttr.Description);
40
39
  expect(systemPrivilege.Status).toBe(systemPrivilegeAttr.Status);
41
40
  expect(systemPrivilege.CreatedById).toBe(systemPrivilegeAttr.CreatedById);
@@ -51,7 +50,6 @@ describe('SystemPrivilege', () => {
51
50
  expect(systemPrivilege).toBeInstanceOf(system_privilege_1.SystemPrivilege);
52
51
  expect(systemPrivilege.PrivilegeCode).toBeUndefined();
53
52
  expect(systemPrivilege.SystemCode).toBeUndefined();
54
- expect(systemPrivilege.Name).toBeUndefined();
55
53
  expect(systemPrivilege.Description).toBeUndefined();
56
54
  expect(systemPrivilege.Status).toBeUndefined();
57
55
  expect(systemPrivilege.CreatedById).toBeUndefined();
@@ -71,7 +69,6 @@ describe('SystemPrivilege', () => {
71
69
  expect(systemPrivilege).toBeInstanceOf(system_privilege_1.SystemPrivilege);
72
70
  expect(systemPrivilege.PrivilegeCode).toBe(systemPrivilegeAttr.PrivilegeCode);
73
71
  expect(systemPrivilege.SystemCode).toBe(systemPrivilegeAttr.SystemCode);
74
- expect(systemPrivilege.Name).toBe(systemPrivilegeAttr.Name);
75
72
  expect(systemPrivilege.Description).toBe(systemPrivilegeAttr.Description);
76
73
  expect(systemPrivilege.Status).toBe(systemPrivilegeAttr.Status);
77
74
  expect(systemPrivilege.CreatedById).toBe(systemPrivilegeAttr.CreatedById);
@@ -1 +1 @@
1
- {"version":3,"file":"system-privilege.spec.js","sourceRoot":"","sources":["../../../../../__tests__/unit/components/system-privilege/system-privilege.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-privilege.spec.js","sourceRoot":"","sources":["../../../../../__tests__/unit/components/system-privilege/system-privilege.spec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export interface ICheckUserInfoDuplicatedQuery {
2
2
  Email?: string;
3
+ UserName?: string;
3
4
  IdType?: string;
4
5
  IdNo?: string;
5
6
  ContactNo?: string;
@@ -5,6 +5,7 @@ export interface IUserInfo {
5
5
  IDNo: string;
6
6
  Email: string;
7
7
  ContactNo: string;
8
+ UserName: string;
8
9
  UserId?: number;
9
10
  Password: string;
10
11
  staffs?: any;
@@ -1,12 +1,12 @@
1
1
  import { LoginUserBase } from '@tomei/general';
2
2
  import { ISessionService } from '../../session/interfaces/session-service.interface';
3
3
  import { ISystemLogin } from '../../../src/interfaces/system-login.interface';
4
- import UserGroup from '../../models/user-group.entity';
5
4
  import { YN } from '../../enum/yn.enum';
6
5
  import { UserStatus } from '../../enum';
7
6
  export declare class LoginUser extends LoginUserBase {
8
7
  ObjectId: string;
9
8
  Email: string;
9
+ private _UserName;
10
10
  private _Password;
11
11
  private _Status;
12
12
  private _DefaultPasswordChangedYN;
@@ -47,6 +47,8 @@ export declare class LoginUser extends LoginUserBase {
47
47
  private set Password(value);
48
48
  get Status(): UserStatus;
49
49
  private set Status(value);
50
+ get UserName(): string;
51
+ set UserName(value: string);
50
52
  get DefaultPasswordChangedYN(): YN;
51
53
  private set DefaultPasswordChangedYN(value);
52
54
  get FirstLoginAt(): Date;
@@ -101,7 +103,7 @@ export declare class LoginUser extends LoginUserBase {
101
103
  private incrementFailedLoginAttemptCount;
102
104
  static shouldReleaseLock(LastFailedLoginAt: any): boolean;
103
105
  private static releaseLock;
104
- static getGroups(loginUser: LoginUser, dbTransaction: any): Promise<UserGroup[]>;
106
+ static getGroups(loginUser: LoginUser, dbTransaction: any): Promise<import("../../models/user-group.entity").default[]>;
105
107
  private static getInheritedSystemAccess;
106
108
  private static combineSystemAccess;
107
109
  static getSystems(loginUser: LoginUser, dbTransaction: any): Promise<any[]>;
@@ -35,6 +35,7 @@ const user_object_privilege_repository_1 = require("../user-object-privilege/use
35
35
  const group_privilege_entity_1 = require("../../models/group-privilege.entity");
36
36
  const group_object_privilege_repository_1 = require("../group-object-privilege/group-object-privilege.repository");
37
37
  const speakeasy = require("speakeasy");
38
+ const login_status_enum_1 = require("../../enum/login-status.enum");
38
39
  class LoginUser extends general_1.LoginUserBase {
39
40
  get SessionService() {
40
41
  return this._SessionService;
@@ -57,6 +58,12 @@ class LoginUser extends general_1.LoginUserBase {
57
58
  set Status(value) {
58
59
  this._Status = value;
59
60
  }
61
+ get UserName() {
62
+ return this._UserName;
63
+ }
64
+ set UserName(value) {
65
+ this._UserName = value;
66
+ }
60
67
  get DefaultPasswordChangedYN() {
61
68
  return this._DefaultPasswordChangedYN;
62
69
  }
@@ -163,6 +170,7 @@ class LoginUser extends general_1.LoginUserBase {
163
170
  }
164
171
  if (userInfo) {
165
172
  this.UserId = userInfo.UserId;
173
+ this.UserName = userInfo.FullName;
166
174
  this.FullName = userInfo.FullName;
167
175
  this.IDNo = userInfo.IDNo;
168
176
  this.Email = userInfo.Email;
@@ -208,6 +216,7 @@ class LoginUser extends general_1.LoginUserBase {
208
216
  if (user) {
209
217
  const userAttr = {
210
218
  UserId: user.UserId,
219
+ UserName: user.UserName,
211
220
  FullName: user.Staff.FullName,
212
221
  IDNo: user.Staff.IdNo,
213
222
  ContactNo: user.Staff.Mobile,
@@ -260,6 +269,7 @@ class LoginUser extends general_1.LoginUserBase {
260
269
  if (user) {
261
270
  const userAttr = {
262
271
  UserId: user.UserId,
272
+ UserName: user.UserName,
263
273
  FullName: user.Staff.FullName,
264
274
  IDNo: user.Staff.IdNo,
265
275
  ContactNo: user.Staff.Mobile,
@@ -356,6 +366,7 @@ class LoginUser extends general_1.LoginUserBase {
356
366
  }
357
367
  yield LoginUser._Repository.update({
358
368
  FullName: this.FullName,
369
+ UserName: this.UserName,
359
370
  IDNo: this.IDNo,
360
371
  Email: this.Email,
361
372
  ContactNo: this.ContactNo,
@@ -400,6 +411,7 @@ class LoginUser extends general_1.LoginUserBase {
400
411
  SystemCode: system.SystemCode,
401
412
  OriginIp: ipAddress,
402
413
  CreatedAt: new Date(),
414
+ LoginStatus: login_status_enum_1.LoginStatusEnum.SUCCESS,
403
415
  dbTransaction,
404
416
  });
405
417
  const is2FAEnabledYN = config_1.ComponentConfig.getComponentConfigValue('@tomei/sso', 'is2FAEnabledYN');
@@ -409,6 +421,14 @@ class LoginUser extends general_1.LoginUserBase {
409
421
  return `${this.UserId}:${sessionId}`;
410
422
  }
411
423
  catch (error) {
424
+ yield LoginUser._LoginHistoryRepository.create({
425
+ UserId: this.UserId,
426
+ SystemCode: systemCode,
427
+ OriginIp: ipAddress,
428
+ LoginStatus: login_status_enum_1.LoginStatusEnum.FAILURE,
429
+ CreatedAt: new Date(),
430
+ dbTransaction,
431
+ });
412
432
  throw error;
413
433
  }
414
434
  });
@@ -581,11 +601,11 @@ class LoginUser extends general_1.LoginUserBase {
581
601
  let privileges = [];
582
602
  const groupPrivileges = [];
583
603
  for (const groupPrivilege of group.GroupPrivileges) {
584
- groupPrivileges.push(groupPrivilege.Privilege.Name);
604
+ groupPrivileges.push(groupPrivilege.Privilege.PrivilegeCode);
585
605
  }
586
606
  const ops = [];
587
607
  for (const objectPrivilege of objectPrivileges) {
588
- ops.push(objectPrivilege.Privilege.Name);
608
+ ops.push(objectPrivilege.Privilege.PrivilegeCode);
589
609
  }
590
610
  privileges = [...privileges, ...groupPrivileges, ...ops];
591
611
  if (group.ParentGroupCode && group.InheritParentPrivilegeYN === 'Y') {
@@ -616,7 +636,7 @@ class LoginUser extends general_1.LoginUserBase {
616
636
  },
617
637
  transaction: dbTransaction,
618
638
  });
619
- const privileges = userPrivileges.map((u) => u.Privilege.Name);
639
+ const privileges = userPrivileges.map((u) => u.Privilege.PrivilegeCode);
620
640
  return privileges;
621
641
  }
622
642
  catch (error) {
@@ -640,7 +660,7 @@ class LoginUser extends general_1.LoginUserBase {
640
660
  },
641
661
  transaction: dbTransaction,
642
662
  });
643
- const privilegesCodes = userObjectPrivileges.map((u) => u.Privilege.Name);
663
+ const privilegesCodes = userObjectPrivileges.map((u) => u.Privilege.PrivilegeCode);
644
664
  return privilegesCodes;
645
665
  }
646
666
  catch (error) {
@@ -709,13 +729,16 @@ class LoginUser extends general_1.LoginUserBase {
709
729
  static checkUserInfoDuplicated(dbTransaction, query) {
710
730
  return __awaiter(this, void 0, void 0, function* () {
711
731
  try {
712
- const { Email, IdType, IdNo, ContactNo } = query;
732
+ const { Email, UserName, IdType, IdNo, ContactNo } = query;
713
733
  const where = {
714
734
  [sequelize_1.Op.or]: {},
715
735
  };
716
736
  if (Email) {
717
737
  where[sequelize_1.Op.or]['Email'] = Email;
718
738
  }
739
+ if (UserName) {
740
+ where[sequelize_1.Op.or]['UserName'] = UserName;
741
+ }
719
742
  if (IdType && IdNo) {
720
743
  where[sequelize_1.Op.or]['IdType'] = IdType;
721
744
  where[sequelize_1.Op.or]['IdNo'] = IdNo;
@@ -876,11 +899,12 @@ class LoginUser extends general_1.LoginUserBase {
876
899
  if (!isPrivileged) {
877
900
  throw new general_1.ClassError('LoginUser', 'LoginUserErrMsg0X', 'You do not have the privilege to create user');
878
901
  }
879
- if (!user.Email) {
880
- throw new general_1.ClassError('LoginUser', 'LoginUserErrMsg0X', 'Email is required');
902
+ if (!user.Email && !user.UserName) {
903
+ throw new general_1.ClassError('LoginUser', 'LoginUserErrMsg0X', 'Email and Username is required');
881
904
  }
882
905
  yield LoginUser.checkUserInfoDuplicated(dbTransaction, {
883
906
  Email: user.Email,
907
+ UserName: user.UserName,
884
908
  IdType: user.IDType,
885
909
  IdNo: user.IDNo,
886
910
  ContactNo: user.ContactNo,
@@ -888,6 +912,7 @@ class LoginUser extends general_1.LoginUserBase {
888
912
  const defaultPassword = LoginUser.generateDefaultPassword();
889
913
  user = yield LoginUser.setPassword(dbTransaction, user, defaultPassword);
890
914
  const userInfo = {
915
+ UserName: user.UserName,
891
916
  FullName: user.FullName,
892
917
  IDNo: user.IDNo,
893
918
  Email: user.Email,
@@ -912,6 +937,7 @@ class LoginUser extends general_1.LoginUserBase {
912
937
  };
913
938
  const newUser = yield LoginUser._Repository.create({
914
939
  Email: userInfo.Email,
940
+ UserName: userInfo.UserName,
915
941
  Password: userInfo.Password,
916
942
  Status: userInfo.Status,
917
943
  DefaultPasswordChangedYN: userInfo.DefaultPasswordChangedYN,