@tomei/sso 0.61.0 → 0.61.1

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 (134) hide show
  1. package/dist/__tests__/unit/components/group-privilege/group-privilege.test.d.ts +1 -0
  2. package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js +71 -0
  3. package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js.map +1 -0
  4. package/dist/__tests__/unit/components/login-user/login-user.spec.d.ts +0 -0
  5. package/dist/__tests__/unit/components/login-user/login-user.spec.js +6 -0
  6. package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +1 -0
  7. package/dist/src/components/login-history/login-history.d.ts +23 -0
  8. package/dist/src/components/login-history/login-history.js +88 -0
  9. package/dist/src/components/login-history/login-history.js.map +1 -0
  10. package/dist/src/components/login-user/user.js +3 -2
  11. package/dist/src/components/login-user/user.js.map +1 -1
  12. package/dist/src/interfaces/login-history-search-attr.interface.d.ts +8 -0
  13. package/dist/src/interfaces/login-history-search-attr.interface.js +3 -0
  14. package/dist/src/interfaces/login-history-search-attr.interface.js.map +1 -0
  15. package/dist/src/interfaces/login-history.interface.d.ts +11 -0
  16. package/dist/src/interfaces/login-history.interface.js +3 -0
  17. package/dist/src/interfaces/login-history.interface.js.map +1 -0
  18. package/dist/tsconfig.tsbuildinfo +1 -1
  19. package/package.json +1 -1
  20. package/src/components/api-key/api-key.repository.ts +15 -15
  21. package/src/components/api-key/api-key.ts +448 -448
  22. package/src/components/api-key/index.ts +4 -4
  23. package/src/components/building/building.repository.ts +27 -27
  24. package/src/components/building/index.ts +2 -2
  25. package/src/components/group/group.repository.ts +26 -26
  26. package/src/components/group/group.ts +2284 -2284
  27. package/src/components/group/index.ts +3 -3
  28. package/src/components/group-object-privilege/group-object-privilege.repository.ts +25 -25
  29. package/src/components/group-object-privilege/group-object-privilege.ts +278 -278
  30. package/src/components/group-object-privilege/index.ts +2 -2
  31. package/src/components/group-privilege/group-privilege.repository.ts +29 -29
  32. package/src/components/group-privilege/group-privilege.ts +84 -84
  33. package/src/components/group-privilege/index.ts +2 -2
  34. package/src/components/group-reporting-user/group-reporting-user.repository.ts +23 -23
  35. package/src/components/group-reporting-user/group-reporting-user.ts +506 -506
  36. package/src/components/group-reporting-user/index.ts +3 -3
  37. package/src/components/group-system-access/group-system-access.repository.ts +43 -43
  38. package/src/components/group-system-access/group-system-access.ts +90 -90
  39. package/src/components/group-system-access/index.ts +2 -2
  40. package/src/components/index.ts +20 -20
  41. package/src/components/login-user/index.ts +5 -5
  42. package/src/components/login-user/interfaces/check-user-info-duplicated.interface.ts +7 -7
  43. package/src/components/login-user/interfaces/index.ts +1 -1
  44. package/src/components/login-user/interfaces/system-access.interface.ts +13 -13
  45. package/src/components/login-user/interfaces/user-info.interface.ts +34 -34
  46. package/src/components/login-user/login-user.ts +362 -362
  47. package/src/components/login-user/user.repository.ts +11 -11
  48. package/src/components/login-user/user.ts +3 -2
  49. package/src/components/password-hash/index.ts +2 -2
  50. package/src/components/password-hash/interfaces/index.ts +1 -1
  51. package/src/components/password-hash/interfaces/password-hash-service.interface.ts +4 -4
  52. package/src/components/password-hash/password-hash.service.ts +14 -14
  53. package/src/components/staff/index.ts +2 -2
  54. package/src/components/staff/staff.repository.ts +27 -27
  55. package/src/components/system/index.ts +3 -3
  56. package/src/components/system/system.repository.ts +11 -11
  57. package/src/components/system/system.ts +456 -456
  58. package/src/components/system-privilege/index.ts +4 -4
  59. package/src/components/system-privilege/system-privilege.repository.ts +18 -18
  60. package/src/components/system-privilege/system-privilege.ts +541 -541
  61. package/src/components/user-group/index.ts +2 -2
  62. package/src/components/user-group/user-group.repository.ts +19 -19
  63. package/src/components/user-group/user-group.ts +764 -764
  64. package/src/components/user-object-privilege/index.ts +2 -2
  65. package/src/components/user-object-privilege/user-object-privilege.repository.ts +11 -11
  66. package/src/components/user-object-privilege/user-object-privilege.ts +79 -79
  67. package/src/components/user-password-history/index.ts +2 -2
  68. package/src/components/user-password-history/user-password-history.repository.ts +39 -39
  69. package/src/components/user-password-history/user-password-history.ts +187 -187
  70. package/src/components/user-privilege/index.ts +2 -2
  71. package/src/components/user-privilege/user-privilege.repository.ts +25 -25
  72. package/src/components/user-privilege/user-privilege.ts +662 -662
  73. package/src/components/user-reporting-hierarchy/index.ts +2 -2
  74. package/src/components/user-reporting-hierarchy/user-reporting-hierarchy.repository.ts +30 -30
  75. package/src/components/user-reporting-hierarchy/user-reporting-hierarchy.ts +505 -505
  76. package/src/components/user-system-access/index.ts +2 -2
  77. package/src/components/user-system-access/user-system-access.repository.ts +41 -41
  78. package/src/database.ts +15 -15
  79. package/src/enum/api-key.enum.ts +5 -5
  80. package/src/enum/building-type.enum.ts +6 -6
  81. package/src/enum/group-type.enum.ts +8 -8
  82. package/src/enum/index.ts +6 -6
  83. package/src/enum/login-status.enum.ts +4 -4
  84. package/src/enum/object-status.enum.ts +4 -4
  85. package/src/enum/user-status.enum.ts +7 -7
  86. package/src/enum/yn.enum.ts +4 -4
  87. package/src/index.ts +8 -8
  88. package/src/interfaces/api-key-attr.interface.ts +16 -16
  89. package/src/interfaces/group-object-privilege.interface.ts +14 -14
  90. package/src/interfaces/group-privilege.interface.ts +10 -10
  91. package/src/interfaces/group-reporting-user.interface.ts +11 -11
  92. package/src/interfaces/group-search-attr.interface.ts +9 -9
  93. package/src/interfaces/group-system-access.interface.ts +10 -10
  94. package/src/interfaces/group.interface.ts +17 -17
  95. package/src/interfaces/index.ts +13 -13
  96. package/src/interfaces/system-login.interface.ts +6 -6
  97. package/src/interfaces/system-privilege-search.interface.ts +5 -5
  98. package/src/interfaces/system-privilege.interface.ts +11 -11
  99. package/src/interfaces/system-search-attr.interface.ts +5 -5
  100. package/src/interfaces/system.interface.ts +15 -15
  101. package/src/interfaces/user-group.interface.ts +12 -12
  102. package/src/interfaces/user-object-privilege.interface.ts +14 -14
  103. package/src/interfaces/user-password-history.interface.ts +6 -6
  104. package/src/interfaces/user-privilege.interface.ts +10 -10
  105. package/src/interfaces/user-reporting-hierarchy.interface.ts +11 -11
  106. package/src/interfaces/user-session.interface.ts +5 -5
  107. package/src/interfaces/user-system-access.interface.ts +10 -10
  108. package/src/models/api-key-entity.ts +101 -101
  109. package/src/models/building.entity.ts +103 -103
  110. package/src/models/group-object-privilege.entity.ts +91 -91
  111. package/src/models/group-privilege.entity.ts +78 -78
  112. package/src/models/group-reporting-user.entity.ts +95 -95
  113. package/src/models/group-system-access.entity.ts +81 -81
  114. package/src/models/group.entity.ts +127 -127
  115. package/src/models/staff.entity.ts +91 -91
  116. package/src/models/system-privilege.entity.ts +90 -90
  117. package/src/models/system.entity.ts +113 -113
  118. package/src/models/user-group.entity.ts +91 -91
  119. package/src/models/user-object-privilege.entity.ts +90 -90
  120. package/src/models/user-password-history.ts +51 -51
  121. package/src/models/user-privilege.entity.ts +78 -78
  122. package/src/models/user-reporting-hierarchy.entity.ts +102 -102
  123. package/src/models/user-system-access.entity.ts +87 -87
  124. package/src/models/user.entity.ts +193 -193
  125. package/src/redis-client/__mocks__/jest-initial-setup.ts +2 -2
  126. package/src/redis-client/__mocks__/redis-mock.ts +28 -28
  127. package/src/redis-client/index.ts +1 -1
  128. package/src/redis-client/redis.service.ts +75 -75
  129. package/src/session/index.ts +2 -2
  130. package/src/session/interfaces/index.ts +1 -1
  131. package/src/session/interfaces/session-service.interface.ts +26 -26
  132. package/src/session/session.service.ts +96 -96
  133. package/src/types/auth-context.ts +10 -10
  134. package/src/types/index.ts +1 -1
@@ -1,3 +1,3 @@
1
- //export all files inside this folder
2
- export * from './group';
3
- export * from './group.repository';
1
+ //export all files inside this folder
2
+ export * from './group';
3
+ export * from './group.repository';
@@ -1,25 +1,25 @@
1
- import GroupObjectPrivilegeModel from '../../models/group-object-privilege.entity';
2
- import { RepositoryBase, IRepositoryBase } from '@tomei/general';
3
-
4
- export class GroupObjectPrivilegeRepository
5
- extends RepositoryBase<GroupObjectPrivilegeModel>
6
- implements IRepositoryBase<GroupObjectPrivilegeModel>
7
- {
8
- constructor() {
9
- super(GroupObjectPrivilegeModel);
10
- }
11
-
12
- public async delete(
13
- where: any,
14
- transaction?: any,
15
- ): Promise<number | undefined> {
16
- try {
17
- return await GroupObjectPrivilegeModel.destroy({
18
- where,
19
- transaction,
20
- });
21
- } catch (error) {
22
- throw error;
23
- }
24
- }
25
- }
1
+ import GroupObjectPrivilegeModel from '../../models/group-object-privilege.entity';
2
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
3
+
4
+ export class GroupObjectPrivilegeRepository
5
+ extends RepositoryBase<GroupObjectPrivilegeModel>
6
+ implements IRepositoryBase<GroupObjectPrivilegeModel>
7
+ {
8
+ constructor() {
9
+ super(GroupObjectPrivilegeModel);
10
+ }
11
+
12
+ public async delete(
13
+ where: any,
14
+ transaction?: any,
15
+ ): Promise<number | undefined> {
16
+ try {
17
+ return await GroupObjectPrivilegeModel.destroy({
18
+ where,
19
+ transaction,
20
+ });
21
+ } catch (error) {
22
+ throw error;
23
+ }
24
+ }
25
+ }
@@ -1,278 +1,278 @@
1
- import { ClassError, ObjectBase } from '@tomei/general';
2
- import { GroupObjectPrivilegeRepository } from './group-object-privilege.repository';
3
- import { IGroupObjectPrivilegeAttr } from '../../interfaces/group-object-privilege.interface';
4
- import { ObjectStatus } from '../../enum/object-status.enum';
5
- import { LoginUser } from '../login-user/login-user';
6
- import { ApplicationConfig } from '@tomei/config';
7
- import { ActionEnum, Activity } from '@tomei/activity-history';
8
-
9
- export class GroupObjectPrivilege extends ObjectBase {
10
- TableName = 'sso_GroupObjectPrivilege';
11
- ObjectName: string;
12
- GroupObjectPrivilegeId: number;
13
- GroupCode: string;
14
- SystemPrivilegeId: string;
15
- ObjectId: string;
16
- ObjectType: string;
17
- Status: ObjectStatus;
18
- private _CreatedAt: Date;
19
- private _UpdatedAt: Date;
20
- private _CreatedById: number;
21
- private _UpdatedById: number;
22
-
23
- get CreatedAt() {
24
- return this._CreatedAt;
25
- }
26
-
27
- get UpdatedAt() {
28
- return this._UpdatedAt;
29
- }
30
-
31
- get CreatedById() {
32
- return this._CreatedById;
33
- }
34
-
35
- get UpdatedById() {
36
- return this._UpdatedById;
37
- }
38
-
39
- private static _Repository = new GroupObjectPrivilegeRepository();
40
-
41
- constructor(GroupObjectPrivilegeAttr?: IGroupObjectPrivilegeAttr) {
42
- super();
43
- if (GroupObjectPrivilegeAttr) {
44
- this.GroupObjectPrivilegeId =
45
- GroupObjectPrivilegeAttr.GroupObjectPrivilegeId;
46
- this.GroupCode = GroupObjectPrivilegeAttr.GroupCode;
47
- this.SystemPrivilegeId = GroupObjectPrivilegeAttr.SystemPrivilegeId;
48
- this.ObjectId = GroupObjectPrivilegeAttr.ObjectId;
49
- this.ObjectType = GroupObjectPrivilegeAttr.ObjectType;
50
- this.Status = GroupObjectPrivilegeAttr.Status;
51
- this._CreatedAt = GroupObjectPrivilegeAttr.CreatedAt;
52
- this._UpdatedAt = GroupObjectPrivilegeAttr.UpdatedAt;
53
- this._CreatedById = GroupObjectPrivilegeAttr.CreatedById;
54
- this._UpdatedById = GroupObjectPrivilegeAttr.UpdatedById;
55
- }
56
- }
57
-
58
- public static async init(
59
- dbTransaction?: any,
60
- GroupObjectPrivilegeId?: number,
61
- ) {
62
- try {
63
- if (GroupObjectPrivilegeId) {
64
- const GroupObjectPrivilegeAttr = await this._Repository.findOne({
65
- where: { GroupObjectPrivilegeId },
66
- transaction: dbTransaction,
67
- });
68
- if (GroupObjectPrivilegeAttr) {
69
- return new GroupObjectPrivilege(
70
- GroupObjectPrivilegeAttr.get({ plain: true }),
71
- );
72
- } else {
73
- throw new ClassError(
74
- 'GroupObjectPrivilege',
75
- 'GroupObjectPrivilegeErrMsg00',
76
- 'GroupObjectPrivilege not found',
77
- );
78
- }
79
- }
80
- return new GroupObjectPrivilege();
81
- } catch (error) {
82
- throw error;
83
- }
84
- }
85
-
86
- public static async create(
87
- loginUser: LoginUser,
88
- dbTransaction: any,
89
- groupObjectPrivilege: GroupObjectPrivilege,
90
- ) {
91
- try {
92
- // Part 1: Privilege Checking
93
- const systemCode =
94
- ApplicationConfig.getComponentConfigValue('system-code');
95
- const isPrivileged = await loginUser.checkPrivileges(
96
- systemCode,
97
- 'GROUP_OBJECT_PRIVILEGE_CREATE',
98
- );
99
-
100
- if (!isPrivileged) {
101
- throw new ClassError(
102
- 'GroupObjectPrivilege',
103
- 'GroupErrMsg01',
104
- 'You do not have the privilege to create Group Object Privilege',
105
- );
106
- }
107
-
108
- // Part 2: Validation
109
- // Make sure below variables exists:
110
- // Params.groupObjectPrivilege.GroupCode
111
- if (!groupObjectPrivilege.GroupCode) {
112
- throw new ClassError(
113
- 'GroupObjectPrivilege',
114
- 'GroupObjectPrivilegeErrMsg01',
115
- 'GroupCode is missing.',
116
- );
117
- }
118
- // Params.groupObjectPrivilege.SystemPrivilegeId
119
- if (!groupObjectPrivilege.SystemPrivilegeId) {
120
- throw new ClassError(
121
- 'GroupObjectPrivilege',
122
- 'GroupObjectPrivilegeErrMsg02',
123
- 'SystemPrivilegeId is missing.',
124
- );
125
- }
126
- // Params.groupObjectPrivilege.ObjectId
127
- if (!groupObjectPrivilege.ObjectId) {
128
- throw new ClassError(
129
- 'GroupObjectPrivilege',
130
- 'GroupObjectPrivilegeErrMsg03',
131
- 'ObjectId is missing.',
132
- );
133
- }
134
- // Params.groupObjectPrivilege.ObjectType
135
- if (!groupObjectPrivilege.ObjectType) {
136
- throw new ClassError(
137
- 'GroupObjectPrivilege',
138
- 'GroupObjectPrivilegeErrMsg04',
139
- 'ObjectType is missing.',
140
- );
141
- }
142
-
143
- // Call GroupObjectPrivilege._Repo findOne
144
- const existingGroupObjectPrivilege =
145
- await GroupObjectPrivilege._Repository.findOne({
146
- where: {
147
- GroupCode: groupObjectPrivilege.GroupCode,
148
- SystemPrivilegeId: groupObjectPrivilege.SystemPrivilegeId,
149
- ObjectId: groupObjectPrivilege.ObjectId,
150
- ObjectType: groupObjectPrivilege.ObjectType,
151
- },
152
- transaction: dbTransaction,
153
- });
154
-
155
- // If GroupObjectPrivilege found, throw new ClassError
156
- if (existingGroupObjectPrivilege) {
157
- throw new ClassError(
158
- 'GroupObjectPrivilege',
159
- 'GroupObjectPrivilegeErrMsg05',
160
- 'Duplicate GroupObjectPrivilege found.',
161
- );
162
- }
163
-
164
- // Part 3: Create GroupObjectPrivilege
165
- // Initialise new Group instance and populate the attributes
166
- const objectAttr = {
167
- GroupCode: groupObjectPrivilege.GroupCode,
168
- SystemPrivilegeId: groupObjectPrivilege.SystemPrivilegeId,
169
- ObjectId: groupObjectPrivilege.ObjectId,
170
- ObjectType: groupObjectPrivilege.ObjectType,
171
- Status: ObjectStatus.ACTIVE,
172
- CreatedById: loginUser.UserId,
173
- CreatedAt: new Date(),
174
- UpdatedById: loginUser.UserId,
175
- UpdatedAt: new Date(),
176
- };
177
- const newGroupObjectPrivilege = new GroupObjectPrivilege(objectAttr);
178
-
179
- // Call GroupObjectPrivilege._Repo create method
180
- const createdObject = await GroupObjectPrivilege._Repository.create(
181
- newGroupObjectPrivilege,
182
- {
183
- transaction: dbTransaction,
184
- },
185
- );
186
- newGroupObjectPrivilege.GroupObjectPrivilegeId =
187
- createdObject.GroupObjectPrivilegeId;
188
-
189
- // Part 4: Record Create Group Activity
190
- // Initialise EntityValueBefore variable and set to empty object.
191
- const EntityValueBefore = {};
192
- // Initialise EntityValueAfter variable and set to new Group instance in Part 3.
193
- const EntityValueAfter = objectAttr;
194
- // Instantiate new activity from Activity class
195
- const activity = new Activity();
196
- activity.createId();
197
- activity.Action = ActionEnum.CREATE;
198
- activity.Description = `Create GroupObjectPrivilege for (${newGroupObjectPrivilege.GroupCode})`;
199
- activity.EntityType = 'GroupObjectPrivilege';
200
- activity.EntityId =
201
- newGroupObjectPrivilege.GroupObjectPrivilegeId.toString();
202
- activity.EntityValueBefore = JSON.stringify(EntityValueBefore);
203
- activity.EntityValueAfter = JSON.stringify(EntityValueAfter);
204
- // Call new activity create method.Make sure to pass the dbTransaction and loginUser.userId.
205
- await activity.create(dbTransaction, loginUser.UserId);
206
-
207
- // Return new Group instance
208
- return newGroupObjectPrivilege;
209
- } catch (error) {
210
- throw error;
211
- }
212
- }
213
-
214
- public async delete(loginUser: LoginUser, dbTransaction: any) {
215
- try {
216
- //Part 1: Privilege Checking
217
- const systemCode =
218
- ApplicationConfig.getComponentConfigValue('system-code');
219
- const isPrivileged = await loginUser.checkPrivileges(
220
- systemCode,
221
- 'GROUP_OBJECT_PRIVILEGE_DELETE',
222
- );
223
-
224
- if (!isPrivileged) {
225
- throw new ClassError(
226
- 'GroupObjectPrivilege',
227
- 'GroupErrMsg01',
228
- 'You do not have the privilege to delete Group Object Privilege',
229
- );
230
- }
231
-
232
- // Part 2: Delete GroupObjectPrivilege
233
- // Call GroupObjectPrivilege._Repo delete method by passing:
234
- // dbTransaction
235
- // GroupObjectPrivilege: this.GroupObjectPrivilegeId
236
-
237
- await GroupObjectPrivilege._Repository.delete(
238
- this.GroupObjectPrivilegeId,
239
- {
240
- transaction: dbTransaction,
241
- },
242
- );
243
-
244
- // Part 4: Record Create Group Activity
245
- // Initialise EntityValueBefore variable and set GroupObjectPrivelege column properties
246
- const EntityValueBefore = {
247
- GroupCode: this.GroupCode,
248
- SystemPrivilegeId: this.SystemPrivilegeId,
249
- ObjectId: this.ObjectId,
250
- ObjectType: this.ObjectType,
251
- Status: this.Status,
252
- CreatedById: this.CreatedById,
253
- UpdatedById: this.UpdatedById,
254
- };
255
-
256
- // Initialise EntityValueAfter variable and set empty object
257
- const EntityValueAfter = {};
258
-
259
- // Instantiate new activity from Activity class
260
- const activity = new Activity();
261
- activity.createId();
262
- activity.Action = ActionEnum.DELETE;
263
- activity.Description = `Delete GroupObjectPrivilege ${this.GroupObjectPrivilegeId}`;
264
- activity.EntityType = 'GroupObjectPrivilege';
265
- activity.EntityId = this.GroupObjectPrivilegeId.toString();
266
- activity.EntityValueBefore = JSON.stringify(EntityValueBefore);
267
- activity.EntityValueAfter = JSON.stringify(EntityValueAfter);
268
-
269
- // Call new activity create method.Make sure to pass the dbTransaction and LoginUser.userId.
270
- await activity.create(dbTransaction, loginUser.UserId);
271
-
272
- // Return this
273
- return this;
274
- } catch (error) {
275
- throw error;
276
- }
277
- }
278
- }
1
+ import { ClassError, ObjectBase } from '@tomei/general';
2
+ import { GroupObjectPrivilegeRepository } from './group-object-privilege.repository';
3
+ import { IGroupObjectPrivilegeAttr } from '../../interfaces/group-object-privilege.interface';
4
+ import { ObjectStatus } from '../../enum/object-status.enum';
5
+ import { LoginUser } from '../login-user/login-user';
6
+ import { ApplicationConfig } from '@tomei/config';
7
+ import { ActionEnum, Activity } from '@tomei/activity-history';
8
+
9
+ export class GroupObjectPrivilege extends ObjectBase {
10
+ TableName = 'sso_GroupObjectPrivilege';
11
+ ObjectName: string;
12
+ GroupObjectPrivilegeId: number;
13
+ GroupCode: string;
14
+ SystemPrivilegeId: string;
15
+ ObjectId: string;
16
+ ObjectType: string;
17
+ Status: ObjectStatus;
18
+ private _CreatedAt: Date;
19
+ private _UpdatedAt: Date;
20
+ private _CreatedById: number;
21
+ private _UpdatedById: number;
22
+
23
+ get CreatedAt() {
24
+ return this._CreatedAt;
25
+ }
26
+
27
+ get UpdatedAt() {
28
+ return this._UpdatedAt;
29
+ }
30
+
31
+ get CreatedById() {
32
+ return this._CreatedById;
33
+ }
34
+
35
+ get UpdatedById() {
36
+ return this._UpdatedById;
37
+ }
38
+
39
+ private static _Repository = new GroupObjectPrivilegeRepository();
40
+
41
+ constructor(GroupObjectPrivilegeAttr?: IGroupObjectPrivilegeAttr) {
42
+ super();
43
+ if (GroupObjectPrivilegeAttr) {
44
+ this.GroupObjectPrivilegeId =
45
+ GroupObjectPrivilegeAttr.GroupObjectPrivilegeId;
46
+ this.GroupCode = GroupObjectPrivilegeAttr.GroupCode;
47
+ this.SystemPrivilegeId = GroupObjectPrivilegeAttr.SystemPrivilegeId;
48
+ this.ObjectId = GroupObjectPrivilegeAttr.ObjectId;
49
+ this.ObjectType = GroupObjectPrivilegeAttr.ObjectType;
50
+ this.Status = GroupObjectPrivilegeAttr.Status;
51
+ this._CreatedAt = GroupObjectPrivilegeAttr.CreatedAt;
52
+ this._UpdatedAt = GroupObjectPrivilegeAttr.UpdatedAt;
53
+ this._CreatedById = GroupObjectPrivilegeAttr.CreatedById;
54
+ this._UpdatedById = GroupObjectPrivilegeAttr.UpdatedById;
55
+ }
56
+ }
57
+
58
+ public static async init(
59
+ dbTransaction?: any,
60
+ GroupObjectPrivilegeId?: number,
61
+ ) {
62
+ try {
63
+ if (GroupObjectPrivilegeId) {
64
+ const GroupObjectPrivilegeAttr = await this._Repository.findOne({
65
+ where: { GroupObjectPrivilegeId },
66
+ transaction: dbTransaction,
67
+ });
68
+ if (GroupObjectPrivilegeAttr) {
69
+ return new GroupObjectPrivilege(
70
+ GroupObjectPrivilegeAttr.get({ plain: true }),
71
+ );
72
+ } else {
73
+ throw new ClassError(
74
+ 'GroupObjectPrivilege',
75
+ 'GroupObjectPrivilegeErrMsg00',
76
+ 'GroupObjectPrivilege not found',
77
+ );
78
+ }
79
+ }
80
+ return new GroupObjectPrivilege();
81
+ } catch (error) {
82
+ throw error;
83
+ }
84
+ }
85
+
86
+ public static async create(
87
+ loginUser: LoginUser,
88
+ dbTransaction: any,
89
+ groupObjectPrivilege: GroupObjectPrivilege,
90
+ ) {
91
+ try {
92
+ // Part 1: Privilege Checking
93
+ const systemCode =
94
+ ApplicationConfig.getComponentConfigValue('system-code');
95
+ const isPrivileged = await loginUser.checkPrivileges(
96
+ systemCode,
97
+ 'GROUP_OBJECT_PRIVILEGE_CREATE',
98
+ );
99
+
100
+ if (!isPrivileged) {
101
+ throw new ClassError(
102
+ 'GroupObjectPrivilege',
103
+ 'GroupErrMsg01',
104
+ 'You do not have the privilege to create Group Object Privilege',
105
+ );
106
+ }
107
+
108
+ // Part 2: Validation
109
+ // Make sure below variables exists:
110
+ // Params.groupObjectPrivilege.GroupCode
111
+ if (!groupObjectPrivilege.GroupCode) {
112
+ throw new ClassError(
113
+ 'GroupObjectPrivilege',
114
+ 'GroupObjectPrivilegeErrMsg01',
115
+ 'GroupCode is missing.',
116
+ );
117
+ }
118
+ // Params.groupObjectPrivilege.SystemPrivilegeId
119
+ if (!groupObjectPrivilege.SystemPrivilegeId) {
120
+ throw new ClassError(
121
+ 'GroupObjectPrivilege',
122
+ 'GroupObjectPrivilegeErrMsg02',
123
+ 'SystemPrivilegeId is missing.',
124
+ );
125
+ }
126
+ // Params.groupObjectPrivilege.ObjectId
127
+ if (!groupObjectPrivilege.ObjectId) {
128
+ throw new ClassError(
129
+ 'GroupObjectPrivilege',
130
+ 'GroupObjectPrivilegeErrMsg03',
131
+ 'ObjectId is missing.',
132
+ );
133
+ }
134
+ // Params.groupObjectPrivilege.ObjectType
135
+ if (!groupObjectPrivilege.ObjectType) {
136
+ throw new ClassError(
137
+ 'GroupObjectPrivilege',
138
+ 'GroupObjectPrivilegeErrMsg04',
139
+ 'ObjectType is missing.',
140
+ );
141
+ }
142
+
143
+ // Call GroupObjectPrivilege._Repo findOne
144
+ const existingGroupObjectPrivilege =
145
+ await GroupObjectPrivilege._Repository.findOne({
146
+ where: {
147
+ GroupCode: groupObjectPrivilege.GroupCode,
148
+ SystemPrivilegeId: groupObjectPrivilege.SystemPrivilegeId,
149
+ ObjectId: groupObjectPrivilege.ObjectId,
150
+ ObjectType: groupObjectPrivilege.ObjectType,
151
+ },
152
+ transaction: dbTransaction,
153
+ });
154
+
155
+ // If GroupObjectPrivilege found, throw new ClassError
156
+ if (existingGroupObjectPrivilege) {
157
+ throw new ClassError(
158
+ 'GroupObjectPrivilege',
159
+ 'GroupObjectPrivilegeErrMsg05',
160
+ 'Duplicate GroupObjectPrivilege found.',
161
+ );
162
+ }
163
+
164
+ // Part 3: Create GroupObjectPrivilege
165
+ // Initialise new Group instance and populate the attributes
166
+ const objectAttr = {
167
+ GroupCode: groupObjectPrivilege.GroupCode,
168
+ SystemPrivilegeId: groupObjectPrivilege.SystemPrivilegeId,
169
+ ObjectId: groupObjectPrivilege.ObjectId,
170
+ ObjectType: groupObjectPrivilege.ObjectType,
171
+ Status: ObjectStatus.ACTIVE,
172
+ CreatedById: loginUser.UserId,
173
+ CreatedAt: new Date(),
174
+ UpdatedById: loginUser.UserId,
175
+ UpdatedAt: new Date(),
176
+ };
177
+ const newGroupObjectPrivilege = new GroupObjectPrivilege(objectAttr);
178
+
179
+ // Call GroupObjectPrivilege._Repo create method
180
+ const createdObject = await GroupObjectPrivilege._Repository.create(
181
+ newGroupObjectPrivilege,
182
+ {
183
+ transaction: dbTransaction,
184
+ },
185
+ );
186
+ newGroupObjectPrivilege.GroupObjectPrivilegeId =
187
+ createdObject.GroupObjectPrivilegeId;
188
+
189
+ // Part 4: Record Create Group Activity
190
+ // Initialise EntityValueBefore variable and set to empty object.
191
+ const EntityValueBefore = {};
192
+ // Initialise EntityValueAfter variable and set to new Group instance in Part 3.
193
+ const EntityValueAfter = objectAttr;
194
+ // Instantiate new activity from Activity class
195
+ const activity = new Activity();
196
+ activity.createId();
197
+ activity.Action = ActionEnum.CREATE;
198
+ activity.Description = `Create GroupObjectPrivilege for (${newGroupObjectPrivilege.GroupCode})`;
199
+ activity.EntityType = 'GroupObjectPrivilege';
200
+ activity.EntityId =
201
+ newGroupObjectPrivilege.GroupObjectPrivilegeId.toString();
202
+ activity.EntityValueBefore = JSON.stringify(EntityValueBefore);
203
+ activity.EntityValueAfter = JSON.stringify(EntityValueAfter);
204
+ // Call new activity create method.Make sure to pass the dbTransaction and loginUser.userId.
205
+ await activity.create(dbTransaction, loginUser.UserId);
206
+
207
+ // Return new Group instance
208
+ return newGroupObjectPrivilege;
209
+ } catch (error) {
210
+ throw error;
211
+ }
212
+ }
213
+
214
+ public async delete(loginUser: LoginUser, dbTransaction: any) {
215
+ try {
216
+ //Part 1: Privilege Checking
217
+ const systemCode =
218
+ ApplicationConfig.getComponentConfigValue('system-code');
219
+ const isPrivileged = await loginUser.checkPrivileges(
220
+ systemCode,
221
+ 'GROUP_OBJECT_PRIVILEGE_DELETE',
222
+ );
223
+
224
+ if (!isPrivileged) {
225
+ throw new ClassError(
226
+ 'GroupObjectPrivilege',
227
+ 'GroupErrMsg01',
228
+ 'You do not have the privilege to delete Group Object Privilege',
229
+ );
230
+ }
231
+
232
+ // Part 2: Delete GroupObjectPrivilege
233
+ // Call GroupObjectPrivilege._Repo delete method by passing:
234
+ // dbTransaction
235
+ // GroupObjectPrivilege: this.GroupObjectPrivilegeId
236
+
237
+ await GroupObjectPrivilege._Repository.delete(
238
+ this.GroupObjectPrivilegeId,
239
+ {
240
+ transaction: dbTransaction,
241
+ },
242
+ );
243
+
244
+ // Part 4: Record Create Group Activity
245
+ // Initialise EntityValueBefore variable and set GroupObjectPrivelege column properties
246
+ const EntityValueBefore = {
247
+ GroupCode: this.GroupCode,
248
+ SystemPrivilegeId: this.SystemPrivilegeId,
249
+ ObjectId: this.ObjectId,
250
+ ObjectType: this.ObjectType,
251
+ Status: this.Status,
252
+ CreatedById: this.CreatedById,
253
+ UpdatedById: this.UpdatedById,
254
+ };
255
+
256
+ // Initialise EntityValueAfter variable and set empty object
257
+ const EntityValueAfter = {};
258
+
259
+ // Instantiate new activity from Activity class
260
+ const activity = new Activity();
261
+ activity.createId();
262
+ activity.Action = ActionEnum.DELETE;
263
+ activity.Description = `Delete GroupObjectPrivilege ${this.GroupObjectPrivilegeId}`;
264
+ activity.EntityType = 'GroupObjectPrivilege';
265
+ activity.EntityId = this.GroupObjectPrivilegeId.toString();
266
+ activity.EntityValueBefore = JSON.stringify(EntityValueBefore);
267
+ activity.EntityValueAfter = JSON.stringify(EntityValueAfter);
268
+
269
+ // Call new activity create method.Make sure to pass the dbTransaction and LoginUser.userId.
270
+ await activity.create(dbTransaction, loginUser.UserId);
271
+
272
+ // Return this
273
+ return this;
274
+ } catch (error) {
275
+ throw error;
276
+ }
277
+ }
278
+ }
@@ -1,2 +1,2 @@
1
- export * from './group-object-privilege';
2
- export * from './group-object-privilege.repository';
1
+ export * from './group-object-privilege';
2
+ export * from './group-object-privilege.repository';