@tomei/sso 0.26.9 → 0.28.2

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 (113) hide show
  1. package/.commitlintrc.json +22 -22
  2. package/.eslintrc +16 -16
  3. package/.eslintrc.js +35 -35
  4. package/.gitlab-ci.yml +16 -16
  5. package/.husky/commit-msg +15 -15
  6. package/.husky/pre-commit +7 -7
  7. package/.prettierrc +4 -4
  8. package/Jenkinsfile +57 -57
  9. package/README.md +23 -23
  10. package/__tests__/unit/components/group/group.spec.ts +79 -79
  11. package/__tests__/unit/components/group-object-privilege/group-object-privilege.spec.ts +88 -88
  12. package/__tests__/unit/components/group-privilege/group-privilege.spec.ts +68 -68
  13. package/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.ts +66 -66
  14. package/__tests__/unit/components/group-system-access/group-system-access.spec.ts +83 -83
  15. package/__tests__/unit/components/login-user/l.spec.ts +746 -746
  16. package/__tests__/unit/components/login-user/login.spec.ts +1064 -1064
  17. package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +31 -31
  18. package/__tests__/unit/components/system/system.spec.ts +254 -254
  19. package/__tests__/unit/components/system-privilege/system-privilege.spec.ts +83 -86
  20. package/__tests__/unit/components/user-group/user-group.spec.ts +86 -86
  21. package/__tests__/unit/components/user-object-privilege/user-object-privilege.spec.ts +78 -78
  22. package/__tests__/unit/components/user-privilege/user-privilege.spec.ts +72 -72
  23. package/__tests__/unit/components/user-system-access/user-system-access.spec.ts +89 -89
  24. package/__tests__/unit/redis-client/redis.service.spec.ts +23 -23
  25. package/__tests__/unit/session/session.service.spec.ts +47 -47
  26. package/__tests__/unit/system-privilege/system-privilage.spec.ts +91 -91
  27. package/create-sso-user.sql +39 -39
  28. package/dist/__tests__/unit/components/login-user/login-user.spec.js +0 -5
  29. package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +1 -1
  30. package/dist/__tests__/unit/components/system-privilege/system-privilege.spec.js +0 -3
  31. package/dist/__tests__/unit/components/system-privilege/system-privilege.spec.js.map +1 -1
  32. package/dist/src/components/group-object-privilege/group-object-privilege.d.ts +2 -0
  33. package/dist/src/components/group-object-privilege/group-object-privilege.js +1 -0
  34. package/dist/src/components/group-object-privilege/group-object-privilege.js.map +1 -1
  35. package/dist/src/components/login-user/interfaces/check-user-info-duplicated.interface.d.ts +1 -0
  36. package/dist/src/components/login-user/interfaces/user-info.interface.d.ts +1 -0
  37. package/dist/src/components/login-user/login-user.d.ts +5 -3
  38. package/dist/src/components/login-user/login-user.js +33 -7
  39. package/dist/src/components/login-user/login-user.js.map +1 -1
  40. package/dist/src/components/system-privilege/system-privilege.d.ts +0 -2
  41. package/dist/src/components/system-privilege/system-privilege.js +0 -8
  42. package/dist/src/components/system-privilege/system-privilege.js.map +1 -1
  43. package/dist/src/components/user-object-privilege/user-object-privilege.d.ts +2 -0
  44. package/dist/src/components/user-object-privilege/user-object-privilege.js +1 -0
  45. package/dist/src/components/user-object-privilege/user-object-privilege.js.map +1 -1
  46. package/dist/src/enum/index.d.ts +2 -0
  47. package/dist/src/enum/index.js +2 -0
  48. package/dist/src/enum/index.js.map +1 -1
  49. package/dist/src/enum/login-status.enum.d.ts +4 -0
  50. package/dist/src/enum/login-status.enum.js +9 -0
  51. package/dist/src/enum/login-status.enum.js.map +1 -0
  52. package/dist/src/enum/object-status.enum.d.ts +4 -0
  53. package/dist/src/enum/object-status.enum.js +9 -0
  54. package/dist/src/enum/object-status.enum.js.map +1 -0
  55. package/dist/src/interfaces/group-object-privilege.interface.d.ts +2 -0
  56. package/dist/src/interfaces/system-privilege.interface.d.ts +0 -1
  57. package/dist/src/interfaces/user-object-privilege.interface.d.ts +2 -0
  58. package/dist/src/models/group-object-privilege.entity.d.ts +2 -0
  59. package/dist/src/models/group-object-privilege.entity.js +8 -0
  60. package/dist/src/models/group-object-privilege.entity.js.map +1 -1
  61. package/dist/src/models/login-history.entity.d.ts +2 -0
  62. package/dist/src/models/login-history.entity.js +8 -0
  63. package/dist/src/models/login-history.entity.js.map +1 -1
  64. package/dist/src/models/system-privilege.entity.d.ts +0 -1
  65. package/dist/src/models/system-privilege.entity.js +1 -9
  66. package/dist/src/models/system-privilege.entity.js.map +1 -1
  67. package/dist/src/models/user-object-privilege.entity.d.ts +2 -0
  68. package/dist/src/models/user-object-privilege.entity.js +8 -0
  69. package/dist/src/models/user-object-privilege.entity.js.map +1 -1
  70. package/dist/src/models/user.entity.d.ts +1 -0
  71. package/dist/src/models/user.entity.js +7 -0
  72. package/dist/src/models/user.entity.js.map +1 -1
  73. package/dist/tsconfig.tsbuildinfo +1 -1
  74. package/jest.config.js +14 -14
  75. package/migrations/20240314080602-create-user-table.js +108 -104
  76. package/migrations/20240314080603-create-user-group-table.js +85 -85
  77. package/migrations/20240314080604-create-user-user-group-table.js +55 -55
  78. package/migrations/20240314080605-create-login-history-table.js +53 -49
  79. package/migrations/20240527064925-create-system-table.js +78 -78
  80. package/migrations/20240527064926-create-system-privilege-table.js +67 -71
  81. package/migrations/20240527065342-create-group-table.js +89 -89
  82. package/migrations/20240527065633-create-group-reporting-user-table.js +76 -76
  83. package/migrations/20240528011551-create-group-system-access-table.js +72 -72
  84. package/migrations/20240528023018-user-system-access-table.js +1 -1
  85. package/migrations/20240528032229-user-privilege-table.js +1 -1
  86. package/migrations/20240528063003-create-group-privilege-table.js +1 -1
  87. package/migrations/20240528063051-create-group-object-privilege-table.js +84 -79
  88. package/migrations/20240528063107-create-user-object-privilege-table.js +5 -0
  89. package/package.json +88 -88
  90. package/sampledotenv +7 -7
  91. package/sonar-project.properties +22 -22
  92. package/src/components/group-object-privilege/group-object-privilege.ts +3 -0
  93. package/src/components/login-user/interfaces/check-user-info-duplicated.interface.ts +1 -0
  94. package/src/components/login-user/interfaces/user-info.interface.ts +1 -0
  95. package/src/components/login-user/login-user.ts +39 -8
  96. package/src/components/system-privilege/system-privilege.ts +0 -10
  97. package/src/components/user-object-privilege/user-object-privilege.ts +3 -0
  98. package/src/enum/index.ts +2 -0
  99. package/src/enum/login-status.enum.ts +4 -0
  100. package/src/enum/object-status.enum.ts +4 -0
  101. package/src/interfaces/group-object-privilege.interface.ts +3 -0
  102. package/src/interfaces/system-privilege.interface.ts +0 -1
  103. package/src/interfaces/user-object-privilege.interface.ts +3 -0
  104. package/src/models/group-object-privilege.entity.ts +7 -0
  105. package/src/models/login-history.entity.ts +7 -0
  106. package/src/models/system-privilege.entity.ts +1 -8
  107. package/src/models/user-object-privilege.entity.ts +7 -0
  108. package/src/models/user.entity.ts +6 -0
  109. package/tsconfig.build.json +5 -5
  110. package/tsconfig.json +22 -22
  111. package/dist/__tests__/unit/components/group-privilege/group-privilege.test.d.ts +0 -1
  112. package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js +0 -71
  113. package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js.map +0 -1
@@ -11,7 +11,6 @@ import { ISystemLogin } from '../../../src/interfaces/system-login.interface';
11
11
  import Staff from '../../models/staff.entity';
12
12
  import SystemPrivilege from '../../models/system-privilege.entity';
13
13
  import LoginHistory from '../../models/login-history.entity';
14
- import UserGroup from '../../models/user-group.entity';
15
14
  import { YN } from '../../enum/yn.enum';
16
15
  import { UserStatus } from '../../enum';
17
16
  import { ApplicationConfig, ComponentConfig } from '@tomei/config';
@@ -31,10 +30,12 @@ import { UserObjectPrivilegeRepository } from '../user-object-privilege/user-obj
31
30
  import GroupPrivilegeModel from '../../models/group-privilege.entity';
32
31
  import { GroupObjectPrivilegeRepository } from '../group-object-privilege/group-object-privilege.repository';
33
32
  import * as speakeasy from 'speakeasy';
33
+ import { LoginStatusEnum } from '../../enum/login-status.enum';
34
34
 
35
35
  export class LoginUser extends LoginUserBase {
36
36
  ObjectId: string;
37
37
  Email: string;
38
+ private _UserName: string;
38
39
  private _Password: string;
39
40
  private _Status: UserStatus;
40
41
  private _DefaultPasswordChangedYN: YN;
@@ -102,6 +103,14 @@ export class LoginUser extends LoginUserBase {
102
103
  this._Status = value;
103
104
  }
104
105
 
106
+ get UserName(): string {
107
+ return this._UserName;
108
+ }
109
+
110
+ private set UserName(value: string) {
111
+ this._UserName = value;
112
+ }
113
+
105
114
  get DefaultPasswordChangedYN(): YN {
106
115
  return this._DefaultPasswordChangedYN;
107
116
  }
@@ -244,6 +253,7 @@ export class LoginUser extends LoginUserBase {
244
253
  // set all the class properties
245
254
  if (userInfo) {
246
255
  this.UserId = userInfo.UserId;
256
+ this.UserName = userInfo.FullName;
247
257
  this.FullName = userInfo.FullName;
248
258
  this.IDNo = userInfo.IDNo;
249
259
  this.Email = userInfo.Email;
@@ -295,6 +305,7 @@ export class LoginUser extends LoginUserBase {
295
305
  if (user) {
296
306
  const userAttr: IUserAttr = {
297
307
  UserId: user.UserId,
308
+ UserName: user.UserName,
298
309
  FullName: user.Staff.FullName,
299
310
  IDNo: user.Staff.IdNo,
300
311
  ContactNo: user.Staff.Mobile,
@@ -356,6 +367,7 @@ export class LoginUser extends LoginUserBase {
356
367
  if (user) {
357
368
  const userAttr: IUserAttr = {
358
369
  UserId: user.UserId,
370
+ UserName: user.UserName,
359
371
  FullName: user.Staff.FullName,
360
372
  IDNo: user.Staff.IdNo,
361
373
  ContactNo: user.Staff.Mobile,
@@ -491,6 +503,7 @@ export class LoginUser extends LoginUserBase {
491
503
  await LoginUser._Repository.update(
492
504
  {
493
505
  FullName: this.FullName,
506
+ UserName: this.UserName,
494
507
  IDNo: this.IDNo,
495
508
  Email: this.Email,
496
509
  ContactNo: this.ContactNo,
@@ -554,6 +567,7 @@ export class LoginUser extends LoginUserBase {
554
567
  SystemCode: system.SystemCode,
555
568
  OriginIp: ipAddress,
556
569
  CreatedAt: new Date(),
570
+ LoginStatus: LoginStatusEnum.SUCCESS,
557
571
  dbTransaction,
558
572
  });
559
573
 
@@ -569,6 +583,14 @@ export class LoginUser extends LoginUserBase {
569
583
 
570
584
  return `${this.UserId}:${sessionId}`;
571
585
  } catch (error) {
586
+ await LoginUser._LoginHistoryRepository.create({
587
+ UserId: this.UserId,
588
+ SystemCode: systemCode,
589
+ OriginIp: ipAddress,
590
+ LoginStatus: LoginStatusEnum.FAILURE,
591
+ CreatedAt: new Date(),
592
+ dbTransaction,
593
+ });
572
594
  throw error;
573
595
  }
574
596
  }
@@ -814,12 +836,12 @@ export class LoginUser extends LoginUserBase {
814
836
  // Add privileges from the group to the privileges array
815
837
  const groupPrivileges: string[] = [];
816
838
  for (const groupPrivilege of group.GroupPrivileges) {
817
- groupPrivileges.push(groupPrivilege.Privilege.Name);
839
+ groupPrivileges.push(groupPrivilege.Privilege.PrivilegeCode);
818
840
  }
819
841
 
820
842
  const ops: string[] = [];
821
843
  for (const objectPrivilege of objectPrivileges) {
822
- ops.push(objectPrivilege.Privilege.Name);
844
+ ops.push(objectPrivilege.Privilege.PrivilegeCode);
823
845
  }
824
846
 
825
847
  privileges = [...privileges, ...groupPrivileges, ...ops];
@@ -860,7 +882,9 @@ export class LoginUser extends LoginUserBase {
860
882
  transaction: dbTransaction,
861
883
  });
862
884
 
863
- const privileges: string[] = userPrivileges.map((u) => u.Privilege.Name);
885
+ const privileges: string[] = userPrivileges.map(
886
+ (u) => u.Privilege.PrivilegeCode,
887
+ );
864
888
  return privileges;
865
889
  } catch (error) {
866
890
  throw error;
@@ -888,7 +912,7 @@ export class LoginUser extends LoginUserBase {
888
912
  });
889
913
 
890
914
  const privilegesCodes: string[] = userObjectPrivileges.map(
891
- (u) => u.Privilege.Name,
915
+ (u) => u.Privilege.PrivilegeCode,
892
916
  );
893
917
  return privilegesCodes;
894
918
  } catch (error) {
@@ -985,7 +1009,7 @@ export class LoginUser extends LoginUserBase {
985
1009
  try {
986
1010
  //Part 1: Prepare Query Params
987
1011
  //Params is all optional but at least one is required.
988
- const { Email, IdType, IdNo, ContactNo } = query;
1012
+ const { Email, UserName, IdType, IdNo, ContactNo } = query;
989
1013
  //Prepare the Params to be used as OR operation in SQL query.
990
1014
  const where = {
991
1015
  [Op.or]: {},
@@ -993,6 +1017,10 @@ export class LoginUser extends LoginUserBase {
993
1017
  if (Email) {
994
1018
  where[Op.or]['Email'] = Email;
995
1019
  }
1020
+
1021
+ if (UserName) {
1022
+ where[Op.or]['UserName'] = UserName;
1023
+ }
996
1024
  //If Params.IdNo is not null, then Params.IdType is required and vice versa.
997
1025
  if (IdType && IdNo) {
998
1026
  where[Op.or]['IdType'] = IdType;
@@ -1269,16 +1297,17 @@ export class LoginUser extends LoginUserBase {
1269
1297
 
1270
1298
  //Part 2: Validation
1271
1299
  //Make sure Params.user.Email got values. If not, throw new ClassError
1272
- if (!user.Email) {
1300
+ if (!user.Email && !user.UserName) {
1273
1301
  throw new ClassError(
1274
1302
  'LoginUser',
1275
1303
  'LoginUserErrMsg0X',
1276
- 'Email is required',
1304
+ 'Email and Username is required',
1277
1305
  );
1278
1306
  }
1279
1307
  //Check if user info exists, call LoginUser.CheckUserInfoDuplicated method
1280
1308
  await LoginUser.checkUserInfoDuplicated(dbTransaction, {
1281
1309
  Email: user.Email,
1310
+ UserName: user.UserName,
1282
1311
  IdType: user.IDType,
1283
1312
  IdNo: user.IDNo,
1284
1313
  ContactNo: user.ContactNo,
@@ -1290,6 +1319,7 @@ export class LoginUser extends LoginUserBase {
1290
1319
  //Part 4: Insert User Record
1291
1320
  //Set userToBeCreated to the instantiation of new LoginUser (using private constructor)
1292
1321
  const userInfo: IUserAttr = {
1322
+ UserName: user.UserName,
1293
1323
  FullName: user.FullName,
1294
1324
  IDNo: user.IDNo,
1295
1325
  Email: user.Email,
@@ -1316,6 +1346,7 @@ export class LoginUser extends LoginUserBase {
1316
1346
  const newUser = await LoginUser._Repository.create(
1317
1347
  {
1318
1348
  Email: userInfo.Email,
1349
+ UserName: userInfo.UserName,
1319
1350
  Password: userInfo.Password,
1320
1351
  Status: userInfo.Status,
1321
1352
  DefaultPasswordChangedYN: userInfo.DefaultPasswordChangedYN,
@@ -24,14 +24,6 @@ export class SystemPrivilege extends ObjectBase {
24
24
  this.ObjectId = value;
25
25
  }
26
26
 
27
- set Name(value: string) {
28
- this.ObjectName = value;
29
- }
30
-
31
- get Name() {
32
- return this.ObjectName;
33
- }
34
-
35
27
  get CreatedAt() {
36
28
  return this._CreatedAt;
37
29
  }
@@ -56,7 +48,6 @@ export class SystemPrivilege extends ObjectBase {
56
48
  if (systemPrivilegeAttr) {
57
49
  this.ObjectId = systemPrivilegeAttr.PrivilegeCode;
58
50
  this.SystemCode = systemPrivilegeAttr.SystemCode;
59
- this.ObjectName = systemPrivilegeAttr.Name;
60
51
  this.Description = systemPrivilegeAttr.Description;
61
52
  this.Status = systemPrivilegeAttr.Status;
62
53
  this._CreatedById = systemPrivilegeAttr.CreatedById;
@@ -79,7 +70,6 @@ export class SystemPrivilege extends ObjectBase {
79
70
  if (systemPrivilegeAttr) {
80
71
  systemPrivilege.ObjectId = systemPrivilegeAttr.PrivilegeCode;
81
72
  systemPrivilege.SystemCode = systemPrivilegeAttr.SystemCode;
82
- systemPrivilege.ObjectName = systemPrivilegeAttr.Name;
83
73
  systemPrivilege.Description = systemPrivilegeAttr.Description;
84
74
  systemPrivilege.Status = systemPrivilegeAttr.Status;
85
75
  systemPrivilege._CreatedById = systemPrivilegeAttr.CreatedById;
@@ -1,6 +1,7 @@
1
1
  import { ClassError, ObjectBase } from '@tomei/general';
2
2
  import { UserObjectPrivilegeRepository } from './user-object-privilege.repository';
3
3
  import { IUserObjectPrivilegeAttr } from '../../interfaces/user-object-privilege.interface';
4
+ import { ObjectStatus } from '../../enum/object-status.enum';
4
5
 
5
6
  export class UserObjectPrivilege extends ObjectBase {
6
7
  TableName = 'sso_UserObjectPrivilege';
@@ -10,6 +11,7 @@ export class UserObjectPrivilege extends ObjectBase {
10
11
  PrivilegeCode: string;
11
12
  ObjectId: string;
12
13
  ObjectType: string;
14
+ Status: ObjectStatus;
13
15
  private _CreatedAt: Date;
14
16
  private _UpdatedAt: Date;
15
17
  private _CreatedById: number;
@@ -41,6 +43,7 @@ export class UserObjectPrivilege extends ObjectBase {
41
43
  this.PrivilegeCode = userObjectPrivilegeAttr.PrivilegeCode;
42
44
  this.ObjectId = userObjectPrivilegeAttr.ObjectId;
43
45
  this.ObjectType = userObjectPrivilegeAttr.ObjectType;
46
+ this.Status = userObjectPrivilegeAttr.Status;
44
47
  this._CreatedAt = userObjectPrivilegeAttr.CreatedAt;
45
48
  this._UpdatedAt = userObjectPrivilegeAttr.UpdatedAt;
46
49
  this._CreatedById = userObjectPrivilegeAttr.CreatedById;
package/src/enum/index.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from './yn.enum';
2
2
  export * from './user-status.enum';
3
3
  export * from './group-type.enum';
4
+ export * from './object-status.enum';
5
+ export * from './login-status.enum';
@@ -0,0 +1,4 @@
1
+ export enum LoginStatusEnum {
2
+ SUCCESS = 'Success',
3
+ FAILURE = 'Failure',
4
+ }
@@ -0,0 +1,4 @@
1
+ export enum ObjectStatus {
2
+ ACTIVE = 'Active',
3
+ INACTIVE = 'Inactive',
4
+ }
@@ -1,9 +1,12 @@
1
+ import { ObjectStatus } from '../enum/object-status.enum';
2
+
1
3
  export interface IGroupObjectPrivilegeAttr {
2
4
  GroupObjectPrivilegeId: number;
3
5
  GroupCode: string;
4
6
  PrivilegeCode: string;
5
7
  ObjectId: string;
6
8
  ObjectType: string;
9
+ Status: ObjectStatus;
7
10
  CreatedById: number;
8
11
  UpdatedById: number;
9
12
  CreatedAt: Date;
@@ -1,7 +1,6 @@
1
1
  export interface ISystemPrivilegeAttr {
2
2
  PrivilegeCode: string;
3
3
  SystemCode: string;
4
- Name: string;
5
4
  Description: string;
6
5
  Status: string;
7
6
  CreatedById: number;
@@ -1,9 +1,12 @@
1
+ import { ObjectStatus } from '../enum/object-status.enum';
2
+
1
3
  export interface IUserObjectPrivilegeAttr {
2
4
  ObjectPrivilegeId: number;
3
5
  UserId: number;
4
6
  PrivilegeCode: string;
5
7
  ObjectId: string;
6
8
  ObjectType: string;
9
+ Status: ObjectStatus;
7
10
  CreatedById: number;
8
11
  UpdatedById: number;
9
12
  CreatedAt: Date;
@@ -11,6 +11,7 @@ import {
11
11
  import User from './user.entity';
12
12
  import GroupModel from './group.entity';
13
13
  import SystemPrivilegeModel from './system-privilege.entity';
14
+ import { ObjectStatus } from '../enum/object-status.enum';
14
15
 
15
16
  @Table({
16
17
  tableName: 'sso_GroupObjectPrivilege',
@@ -51,6 +52,12 @@ export default class GroupObjectPrivilegeModel extends Model {
51
52
  })
52
53
  ObjectType: string;
53
54
 
55
+ @Column({
56
+ type: DataType.STRING(10),
57
+ allowNull: false,
58
+ })
59
+ Status: ObjectStatus;
60
+
54
61
  @ForeignKey(() => User)
55
62
  @Column({
56
63
  type: DataType.INTEGER,
@@ -9,6 +9,7 @@ import {
9
9
  } from 'sequelize-typescript';
10
10
  import User from './user.entity';
11
11
  import SystemModel from './system.entity';
12
+ import { LoginStatusEnum } from '../enum/login-status.enum';
12
13
 
13
14
  @Table({
14
15
  tableName: 'sso_LoginHistory',
@@ -39,6 +40,12 @@ export default class LoginHistory extends Model {
39
40
  })
40
41
  SystemCode: number;
41
42
 
43
+ @Column({
44
+ allowNull: true,
45
+ type: DataType.STRING(191),
46
+ })
47
+ LoginStatus: LoginStatusEnum;
48
+
42
49
  @Column({
43
50
  allowNull: true,
44
51
  type: DataType.STRING(191),
@@ -23,7 +23,7 @@ export default class SystemPrivilegeModel extends Model {
23
23
  @Column({
24
24
  primaryKey: true,
25
25
  allowNull: false,
26
- type: DataType.STRING(10),
26
+ type: DataType.STRING(50),
27
27
  field: 'PrivilegeCode',
28
28
  })
29
29
  PrivilegeCode: string;
@@ -36,13 +36,6 @@ export default class SystemPrivilegeModel extends Model {
36
36
  })
37
37
  SystemCode: string;
38
38
 
39
- @Column({
40
- allowNull: false,
41
- type: DataType.STRING(200),
42
- field: 'Name',
43
- })
44
- Name: string;
45
-
46
39
  @Column({
47
40
  allowNull: true,
48
41
  type: DataType.STRING(3000),
@@ -10,6 +10,7 @@ import {
10
10
  } from 'sequelize-typescript';
11
11
  import User from './user.entity';
12
12
  import SystemPrivilegeModel from './system-privilege.entity';
13
+ import { ObjectStatus } from '../enum/object-status.enum';
13
14
 
14
15
  @Table({
15
16
  tableName: 'sso_UserObjectPrivilege',
@@ -50,6 +51,12 @@ export default class UserObjectPrivilegeModel extends Model {
50
51
  })
51
52
  ObjectType: string;
52
53
 
54
+ @Column({
55
+ type: DataType.STRING(10),
56
+ allowNull: false,
57
+ })
58
+ Status: ObjectStatus;
59
+
53
60
  @ForeignKey(() => User)
54
61
  @Column({
55
62
  type: DataType.INTEGER,
@@ -40,6 +40,12 @@ export default class User extends Model {
40
40
  })
41
41
  Email: string;
42
42
 
43
+ @Column({
44
+ allowNull: true,
45
+ type: DataType.STRING,
46
+ })
47
+ UserName: string;
48
+
43
49
  @Column({
44
50
  allowNull: false,
45
51
  type: DataType.STRING,
@@ -1,6 +1,6 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "include": ["**/*.ts"],
4
- "exclude": ["node_modules", "__tests__", "dist", "**/*spec.ts"]
5
- }
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": ["**/*.ts"],
4
+ "exclude": ["node_modules", "__tests__", "dist", "**/*spec.ts"]
5
+ }
6
6
 
package/tsconfig.json CHANGED
@@ -1,23 +1,23 @@
1
- {
2
- "compilerOptions": {
3
- "module": "commonjs",
4
- "declaration": true,
5
- "removeComments": true,
6
- "emitDecoratorMetadata": true,
7
- "experimentalDecorators": true,
8
- "allowSyntheticDefaultImports": true,
9
- "moduleResolution": "node",
10
- "target": "es6",
11
- "sourceMap": true,
12
- "outDir": "./dist",
13
- "baseUrl": "./src",
14
- "rootDir": "./",
15
- "incremental": true,
16
- "skipLibCheck": true,
17
- "noImplicitAny": false,
18
- "strictBindCallApply": false,
19
- "forceConsistentCasingInFileNames": false,
20
- "noFallthroughCasesInSwitch": false,
21
- "strictNullChecks": false,
22
- },
1
+ {
2
+ "compilerOptions": {
3
+ "module": "commonjs",
4
+ "declaration": true,
5
+ "removeComments": true,
6
+ "emitDecoratorMetadata": true,
7
+ "experimentalDecorators": true,
8
+ "allowSyntheticDefaultImports": true,
9
+ "moduleResolution": "node",
10
+ "target": "es6",
11
+ "sourceMap": true,
12
+ "outDir": "./dist",
13
+ "baseUrl": "./src",
14
+ "rootDir": "./",
15
+ "incremental": true,
16
+ "skipLibCheck": true,
17
+ "noImplicitAny": false,
18
+ "strictBindCallApply": false,
19
+ "forceConsistentCasingInFileNames": false,
20
+ "noFallthroughCasesInSwitch": false,
21
+ "strictNullChecks": false,
22
+ },
23
23
  }
@@ -1,71 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const group_privilege_1 = require("../../../../src/components/group-privilege/group-privilege");
13
- const group_privilege_repository_1 = require("../../../../src/components/group-privilege/group-privilege.repository");
14
- const general_1 = require("@tomei/general");
15
- describe('GroupPrivilege', () => {
16
- afterEach(() => {
17
- jest.restoreAllMocks();
18
- });
19
- it('should initialize with GroupPrivilegeAttr', () => __awaiter(void 0, void 0, void 0, function* () {
20
- const mockGroupPrivilegeAttr = {
21
- GroupPrivilegeId: 1,
22
- GroupCode: 'group1',
23
- PrivilegeCode: 'privilege1',
24
- Status: 'active',
25
- CreatedAt: new Date(),
26
- UpdatedAt: new Date(),
27
- CreatedById: 1,
28
- UpdatedById: 1,
29
- };
30
- const findOneMock = jest
31
- .spyOn(group_privilege_repository_1.GroupPrivilegeRepository.prototype, 'findOne')
32
- .mockResolvedValueOnce({ get: jest.fn().mockReturnValue(mockGroupPrivilegeAttr) });
33
- const groupPrivilege = yield group_privilege_1.GroupPrivilege.init(null, 1);
34
- expect(findOneMock).toBeCalledWith({
35
- where: { GroupPrivilegeId: 1 },
36
- transaction: null,
37
- });
38
- expect(groupPrivilege).toBeInstanceOf(group_privilege_1.GroupPrivilege);
39
- expect(groupPrivilege.GroupPrivilegeId).toEqual(mockGroupPrivilegeAttr.GroupPrivilegeId);
40
- expect(groupPrivilege.GroupCode).toEqual(mockGroupPrivilegeAttr.GroupCode);
41
- expect(groupPrivilege.PrivilegeCode).toEqual(mockGroupPrivilegeAttr.PrivilegeCode);
42
- expect(groupPrivilege.Status).toEqual(mockGroupPrivilegeAttr.Status);
43
- expect(groupPrivilege.CreatedAt).toEqual(mockGroupPrivilegeAttr.CreatedAt);
44
- expect(groupPrivilege.UpdatedAt).toEqual(mockGroupPrivilegeAttr.UpdatedAt);
45
- expect(groupPrivilege.CreatedById).toEqual(mockGroupPrivilegeAttr.CreatedById);
46
- expect(groupPrivilege.UpdatedById).toEqual(mockGroupPrivilegeAttr.UpdatedById);
47
- }));
48
- it('should throw ClassError when GroupPrivilegeAttr is not found', () => __awaiter(void 0, void 0, void 0, function* () {
49
- const findOneMock = jest
50
- .spyOn(group_privilege_repository_1.GroupPrivilegeRepository.prototype, 'findOne')
51
- .mockResolvedValueOnce(null);
52
- yield expect(group_privilege_1.GroupPrivilege.init(null, 1)).rejects.toThrow(general_1.ClassError);
53
- expect(findOneMock).toBeCalledWith({
54
- where: { GroupPrivilegeId: 1 },
55
- transaction: null,
56
- });
57
- }));
58
- it('should initialize with default values', () => __awaiter(void 0, void 0, void 0, function* () {
59
- const groupPrivilege = yield group_privilege_1.GroupPrivilege.init();
60
- expect(groupPrivilege).toBeInstanceOf(group_privilege_1.GroupPrivilege);
61
- expect(groupPrivilege.GroupPrivilegeId).toBeUndefined();
62
- expect(groupPrivilege.GroupCode).toBeUndefined();
63
- expect(groupPrivilege.PrivilegeCode).toBeUndefined();
64
- expect(groupPrivilege.Status).toBeUndefined();
65
- expect(groupPrivilege.CreatedAt).toBeUndefined();
66
- expect(groupPrivilege.UpdatedAt).toBeUndefined();
67
- expect(groupPrivilege.CreatedById).toBeUndefined();
68
- expect(groupPrivilege.UpdatedById).toBeUndefined();
69
- }));
70
- });
71
- //# sourceMappingURL=group-privilege.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"group-privilege.test.js","sourceRoot":"","sources":["../../../../../__tests__/unit/components/group-privilege/group-privilege.test.ts"],"names":[],"mappings":"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"}