@tomei/sso 0.27.0 → 0.28.3

Sign up to get free protection for your applications and to get access to all the features.
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,