@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.
- package/.commitlintrc.json +22 -22
- package/.eslintrc +16 -16
- package/.eslintrc.js +35 -35
- package/.gitlab-ci.yml +16 -16
- package/.husky/commit-msg +15 -15
- package/.husky/pre-commit +7 -7
- package/.prettierrc +4 -4
- package/Jenkinsfile +57 -57
- package/README.md +23 -23
- package/__tests__/unit/components/group/group.spec.ts +79 -79
- package/__tests__/unit/components/group-object-privilege/group-object-privilege.spec.ts +88 -88
- package/__tests__/unit/components/group-privilege/group-privilege.spec.ts +68 -68
- package/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.ts +66 -66
- package/__tests__/unit/components/group-system-access/group-system-access.spec.ts +83 -83
- package/__tests__/unit/components/login-user/l.spec.ts +746 -746
- package/__tests__/unit/components/login-user/login.spec.ts +1064 -1064
- package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +31 -31
- package/__tests__/unit/components/system/system.spec.ts +254 -254
- package/__tests__/unit/components/system-privilege/system-privilege.spec.ts +83 -86
- package/__tests__/unit/components/user-group/user-group.spec.ts +86 -86
- package/__tests__/unit/components/user-object-privilege/user-object-privilege.spec.ts +78 -78
- package/__tests__/unit/components/user-privilege/user-privilege.spec.ts +72 -72
- package/__tests__/unit/components/user-system-access/user-system-access.spec.ts +89 -89
- package/__tests__/unit/redis-client/redis.service.spec.ts +23 -23
- package/__tests__/unit/session/session.service.spec.ts +47 -47
- package/__tests__/unit/system-privilege/system-privilage.spec.ts +91 -91
- package/create-sso-user.sql +39 -39
- package/dist/__tests__/unit/components/login-user/login-user.spec.js +0 -5
- package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +1 -1
- package/dist/__tests__/unit/components/system-privilege/system-privilege.spec.js +0 -3
- package/dist/__tests__/unit/components/system-privilege/system-privilege.spec.js.map +1 -1
- package/dist/src/components/group-object-privilege/group-object-privilege.d.ts +2 -0
- package/dist/src/components/group-object-privilege/group-object-privilege.js +1 -0
- package/dist/src/components/group-object-privilege/group-object-privilege.js.map +1 -1
- package/dist/src/components/login-user/interfaces/check-user-info-duplicated.interface.d.ts +1 -0
- package/dist/src/components/login-user/interfaces/user-info.interface.d.ts +1 -0
- package/dist/src/components/login-user/login-user.d.ts +5 -3
- package/dist/src/components/login-user/login-user.js +33 -7
- package/dist/src/components/login-user/login-user.js.map +1 -1
- package/dist/src/components/system-privilege/system-privilege.d.ts +0 -2
- package/dist/src/components/system-privilege/system-privilege.js +0 -8
- package/dist/src/components/system-privilege/system-privilege.js.map +1 -1
- package/dist/src/components/user-object-privilege/user-object-privilege.d.ts +2 -0
- package/dist/src/components/user-object-privilege/user-object-privilege.js +1 -0
- package/dist/src/components/user-object-privilege/user-object-privilege.js.map +1 -1
- package/dist/src/enum/index.d.ts +2 -0
- package/dist/src/enum/index.js +2 -0
- package/dist/src/enum/index.js.map +1 -1
- package/dist/src/enum/login-status.enum.d.ts +4 -0
- package/dist/src/enum/login-status.enum.js +9 -0
- package/dist/src/enum/login-status.enum.js.map +1 -0
- package/dist/src/enum/object-status.enum.d.ts +4 -0
- package/dist/src/enum/object-status.enum.js +9 -0
- package/dist/src/enum/object-status.enum.js.map +1 -0
- package/dist/src/interfaces/group-object-privilege.interface.d.ts +2 -0
- package/dist/src/interfaces/system-privilege.interface.d.ts +0 -1
- package/dist/src/interfaces/user-object-privilege.interface.d.ts +2 -0
- package/dist/src/models/group-object-privilege.entity.d.ts +2 -0
- package/dist/src/models/group-object-privilege.entity.js +8 -0
- package/dist/src/models/group-object-privilege.entity.js.map +1 -1
- package/dist/src/models/login-history.entity.d.ts +2 -0
- package/dist/src/models/login-history.entity.js +8 -0
- package/dist/src/models/login-history.entity.js.map +1 -1
- package/dist/src/models/system-privilege.entity.d.ts +0 -1
- package/dist/src/models/system-privilege.entity.js +1 -9
- package/dist/src/models/system-privilege.entity.js.map +1 -1
- package/dist/src/models/user-object-privilege.entity.d.ts +2 -0
- package/dist/src/models/user-object-privilege.entity.js +8 -0
- package/dist/src/models/user-object-privilege.entity.js.map +1 -1
- package/dist/src/models/user.entity.d.ts +1 -0
- package/dist/src/models/user.entity.js +7 -0
- package/dist/src/models/user.entity.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/jest.config.js +14 -14
- package/migrations/20240314080602-create-user-table.js +108 -104
- package/migrations/20240314080603-create-user-group-table.js +85 -85
- package/migrations/20240314080604-create-user-user-group-table.js +55 -55
- package/migrations/20240314080605-create-login-history-table.js +53 -49
- package/migrations/20240527064925-create-system-table.js +78 -78
- package/migrations/20240527064926-create-system-privilege-table.js +67 -71
- package/migrations/20240527065342-create-group-table.js +89 -89
- package/migrations/20240527065633-create-group-reporting-user-table.js +76 -76
- package/migrations/20240528011551-create-group-system-access-table.js +72 -72
- package/migrations/20240528023018-user-system-access-table.js +1 -1
- package/migrations/20240528032229-user-privilege-table.js +1 -1
- package/migrations/20240528063003-create-group-privilege-table.js +1 -1
- package/migrations/20240528063051-create-group-object-privilege-table.js +84 -79
- package/migrations/20240528063107-create-user-object-privilege-table.js +5 -0
- package/package.json +88 -88
- package/sampledotenv +7 -7
- package/sonar-project.properties +22 -22
- package/src/components/group-object-privilege/group-object-privilege.ts +3 -0
- package/src/components/login-user/interfaces/check-user-info-duplicated.interface.ts +1 -0
- package/src/components/login-user/interfaces/user-info.interface.ts +1 -0
- package/src/components/login-user/login-user.ts +39 -8
- package/src/components/system-privilege/system-privilege.ts +0 -10
- package/src/components/user-object-privilege/user-object-privilege.ts +3 -0
- package/src/enum/index.ts +2 -0
- package/src/enum/login-status.enum.ts +4 -0
- package/src/enum/object-status.enum.ts +4 -0
- package/src/interfaces/group-object-privilege.interface.ts +3 -0
- package/src/interfaces/system-privilege.interface.ts +0 -1
- package/src/interfaces/user-object-privilege.interface.ts +3 -0
- package/src/models/group-object-privilege.entity.ts +7 -0
- package/src/models/login-history.entity.ts +7 -0
- package/src/models/system-privilege.entity.ts +1 -8
- package/src/models/user-object-privilege.entity.ts +7 -0
- package/src/models/user.entity.ts +6 -0
- package/tsconfig.build.json +5 -5
- package/tsconfig.json +22 -22
- package/dist/__tests__/unit/components/group-privilege/group-privilege.test.d.ts +0 -1
- package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js +0 -71
- 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.
|
|
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.
|
|
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(
|
|
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.
|
|
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,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,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(
|
|
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,
|
package/tsconfig.build.json
CHANGED
|
@@ -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 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -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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"}
|