@tomei/sso 0.26.9 → 0.28.2

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