@tomei/sso 0.8.1 → 0.8.4
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/Jenkinsfile +7 -2
- package/__tests__/unit/components/login-history/login-history.repository.spec.ts +88 -88
- package/__tests__/unit/components/login-user/login-user.spec.ts +731 -731
- package/__tests__/unit/components/login-user/user.repository.spec.ts +75 -75
- package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +26 -26
- package/__tests__/unit/components/system/system.repository.spec.ts +82 -82
- package/__tests__/unit/components/system-access/system-access.repository.spec.ts +72 -72
- package/dist/__tests__/unit/components/login-history/login-history.repository.spec.d.ts +0 -1
- package/dist/__tests__/unit/components/login-history/login-history.repository.spec.js +0 -98
- package/dist/__tests__/unit/components/login-history/login-history.repository.spec.js.map +1 -1
- package/dist/__tests__/unit/components/login-user/login-user.spec.d.ts +0 -1
- package/dist/__tests__/unit/components/login-user/login-user.spec.js +0 -659
- package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +1 -1
- package/dist/__tests__/unit/components/login-user/user.repository.spec.d.ts +0 -1
- package/dist/__tests__/unit/components/login-user/user.repository.spec.js +0 -77
- package/dist/__tests__/unit/components/login-user/user.repository.spec.js.map +1 -1
- package/dist/__tests__/unit/components/password-hash/password-hash.service.spec.d.ts +0 -1
- package/dist/__tests__/unit/components/password-hash/password-hash.service.spec.js +0 -37
- package/dist/__tests__/unit/components/password-hash/password-hash.service.spec.js.map +1 -1
- package/dist/__tests__/unit/components/system/system.repository.spec.d.ts +0 -1
- package/dist/__tests__/unit/components/system/system.repository.spec.js +0 -84
- package/dist/__tests__/unit/components/system/system.repository.spec.js.map +1 -1
- package/dist/__tests__/unit/components/system-access/system-access.repository.spec.d.ts +0 -1
- package/dist/__tests__/unit/components/system-access/system-access.repository.spec.js +0 -74
- package/dist/__tests__/unit/components/system-access/system-access.repository.spec.js.map +1 -1
- package/dist/src/components/login-history/login-history.repository.d.ts +4 -8
- package/dist/src/components/login-history/login-history.repository.js +5 -43
- package/dist/src/components/login-history/login-history.repository.js.map +1 -1
- package/dist/src/components/login-user/login-user.d.ts +1 -0
- package/dist/src/components/login-user/login-user.js +61 -55
- package/dist/src/components/login-user/login-user.js.map +1 -1
- package/dist/src/components/login-user/user.repository.d.ts +4 -8
- package/dist/src/components/login-user/user.repository.js +5 -43
- package/dist/src/components/login-user/user.repository.js.map +1 -1
- package/dist/src/components/system/system.repository.d.ts +4 -8
- package/dist/src/components/system/system.repository.js +5 -43
- package/dist/src/components/system/system.repository.js.map +1 -1
- package/dist/src/components/system-access/system-access.repository.d.ts +4 -8
- package/dist/src/components/system-access/system-access.repository.js +5 -43
- package/dist/src/components/system-access/system-access.repository.js.map +1 -1
- package/dist/src/components/user-group/user-group.repository.d.ts +4 -8
- package/dist/src/components/user-group/user-group.repository.js +5 -43
- package/dist/src/components/user-group/user-group.repository.js.map +1 -1
- package/dist/src/components/user-user-group/user-user-group.repository.d.ts +4 -8
- package/dist/src/components/user-user-group/user-user-group.repository.js +5 -43
- package/dist/src/components/user-user-group/user-user-group.repository.js.map +1 -1
- package/dist/src/database.d.ts +4 -0
- package/dist/src/database.js +15 -0
- package/dist/src/database.js.map +1 -0
- package/dist/src/models/authorization-code.entity.d.ts +14 -0
- package/dist/src/models/authorization-code.entity.js +86 -0
- package/dist/src/models/authorization-code.entity.js.map +1 -0
- package/dist/src/models/bearer-token.entity.d.ts +11 -0
- package/dist/src/models/bearer-token.entity.js +72 -0
- package/dist/src/models/bearer-token.entity.js.map +1 -0
- package/dist/src/models/building-type.entity.d.ts +7 -0
- package/dist/src/models/building-type.entity.js +50 -0
- package/dist/src/models/building-type.entity.js.map +1 -0
- package/dist/src/models/building.entity.d.ts +39 -0
- package/dist/src/models/building.entity.js +251 -0
- package/dist/src/models/building.entity.js.map +1 -0
- package/dist/src/models/city.entity.d.ts +11 -0
- package/dist/src/models/city.entity.js +72 -0
- package/dist/src/models/city.entity.js.map +1 -0
- package/dist/src/models/company.entity.d.ts +18 -0
- package/dist/src/models/company.entity.js +114 -0
- package/dist/src/models/company.entity.js.map +1 -0
- package/dist/src/models/country.entity.d.ts +15 -0
- package/dist/src/models/country.entity.js +92 -0
- package/dist/src/models/country.entity.js.map +1 -0
- package/dist/src/models/department.entity.d.ts +19 -0
- package/dist/src/models/department.entity.js +112 -0
- package/dist/src/models/department.entity.js.map +1 -0
- package/dist/src/models/group-role-privilege.entity.d.ts +17 -0
- package/dist/src/models/group-role-privilege.entity.js +90 -0
- package/dist/src/models/group-role-privilege.entity.js.map +1 -0
- package/dist/src/models/group-system-access.entity.d.ts +11 -0
- package/dist/src/models/group-system-access.entity.js +62 -0
- package/dist/src/models/group-system-access.entity.js.map +1 -0
- package/dist/src/models/group-system-privilege.entity.d.ts +11 -0
- package/dist/src/models/group-system-privilege.entity.js +62 -0
- package/dist/src/models/group-system-privilege.entity.js.map +1 -0
- package/dist/src/models/group-system-role.entity.d.ts +11 -0
- package/dist/src/models/group-system-role.entity.js +62 -0
- package/dist/src/models/group-system-role.entity.js.map +1 -0
- package/dist/src/models/login-history.entity.d.ts +12 -0
- package/dist/src/models/login-history.entity.js +70 -0
- package/dist/src/models/login-history.entity.js.map +1 -0
- package/dist/src/models/oauth-token.entity.d.ts +14 -0
- package/dist/src/models/oauth-token.entity.js +86 -0
- package/dist/src/models/oauth-token.entity.js.map +1 -0
- package/dist/src/models/role.entity.d.ts +17 -0
- package/dist/src/models/role.entity.js +102 -0
- package/dist/src/models/role.entity.js.map +1 -0
- package/dist/src/models/staff-type.entity.d.ts +7 -0
- package/dist/src/models/staff-type.entity.js +50 -0
- package/dist/src/models/staff-type.entity.js.map +1 -0
- package/dist/src/models/staff.entity.d.ts +39 -0
- package/dist/src/models/staff.entity.js +250 -0
- package/dist/src/models/staff.entity.js.map +1 -0
- package/dist/src/models/state.entity.d.ts +10 -0
- package/dist/src/models/state.entity.js +64 -0
- package/dist/src/models/state.entity.js.map +1 -0
- package/dist/src/models/system-accesss.entity.d.ts +6 -0
- package/dist/src/models/system-accesss.entity.js +51 -0
- package/dist/src/models/system-accesss.entity.js.map +1 -0
- package/dist/src/models/system-privilege.entity.d.ts +16 -0
- package/dist/src/models/system-privilege.entity.js +90 -0
- package/dist/src/models/system-privilege.entity.js.map +1 -0
- package/dist/src/models/system-role-privilege.entity.d.ts +11 -0
- package/dist/src/models/system-role-privilege.entity.js +60 -0
- package/dist/src/models/system-role-privilege.entity.js.map +1 -0
- package/dist/src/models/system-role.entity.d.ts +11 -0
- package/dist/src/models/system-role.entity.js +83 -0
- package/dist/src/models/system-role.entity.js.map +1 -0
- package/dist/src/models/system.entity.d.ts +19 -0
- package/dist/src/models/system.entity.js +146 -0
- package/dist/src/models/system.entity.js.map +1 -0
- package/dist/src/models/user-group.entity.d.ts +23 -0
- package/dist/src/models/user-group.entity.js +140 -0
- package/dist/src/models/user-group.entity.js.map +1 -0
- package/dist/src/models/user-role.entity.d.ts +9 -0
- package/dist/src/models/user-role.entity.js +62 -0
- package/dist/src/models/user-role.entity.js.map +1 -0
- package/dist/src/models/user-system-privileges.entity.d.ts +13 -0
- package/dist/src/models/user-system-privileges.entity.js +80 -0
- package/dist/src/models/user-system-privileges.entity.js.map +1 -0
- package/dist/src/models/user-system-role.entity.d.ts +11 -0
- package/dist/src/models/user-system-role.entity.js +60 -0
- package/dist/src/models/user-system-role.entity.js.map +1 -0
- package/dist/src/models/user-user-group.entity.d.ts +14 -0
- package/dist/src/models/user-user-group.entity.js +73 -0
- package/dist/src/models/user-user-group.entity.js.map +1 -0
- package/dist/src/models/user.entity.d.ts +30 -0
- package/dist/src/models/user.entity.js +131 -0
- package/dist/src/models/user.entity.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/migrations/01-alter-system-privilege-table.js +13 -0
- package/migrations/02-alter-user-group-table.js +78 -0
- package/migrations/03-alter-user-system-privilege-table.js +38 -0
- package/migrations/04-create-user-user-group-table.js +55 -0
- package/migrations/05-create-login-history-table.js +49 -0
- package/package.json +8 -4
- package/src/components/login-history/login-history.repository.ts +9 -31
- package/src/components/login-user/login-user.ts +65 -65
- package/src/components/login-user/user.repository.ts +9 -31
- package/src/components/system/system.repository.ts +9 -31
- package/src/components/system-access/system-access.repository.ts +9 -31
- package/src/components/user-group/user-group.repository.ts +9 -31
- package/src/components/user-user-group/user-user-group.repository.ts +9 -31
- package/src/database.ts +15 -0
- package/src/models/authorization-code.entity.ts +71 -0
- package/src/models/bearer-token.entity.ts +59 -0
- package/src/models/building-type.entity.ts +38 -0
- package/src/models/building.entity.ts +215 -0
- package/src/models/city.entity.ts +59 -0
- package/src/models/company.entity.ts +96 -0
- package/src/models/country.entity.ts +75 -0
- package/src/models/department.entity.ts +94 -0
- package/src/models/group-role-privilege.entity.ts +73 -0
- package/src/models/group-system-access.entity.ts +49 -0
- package/src/models/group-system-privilege.entity.ts +49 -0
- package/src/models/group-system-role.entity.ts +49 -0
- package/src/models/login-history.entity.ts +56 -0
- package/src/models/oauth-token.entity.ts +71 -0
- package/src/models/role.entity.ts +85 -0
- package/src/models/staff-type.entity.ts +38 -0
- package/src/models/staff.entity.ts +213 -0
- package/src/models/state.entity.ts +52 -0
- package/src/models/system-accesss.entity.ts +40 -0
- package/src/models/system-privilege.entity.ts +75 -0
- package/src/models/system-role-privilege.entity.ts +48 -0
- package/src/models/system-role.entity.ts +68 -0
- package/src/models/system.entity.ts +122 -0
- package/src/models/user-group.entity.ts +118 -0
- package/src/models/user-role.entity.ts +50 -0
- package/src/models/user-system-privileges.entity.ts +66 -0
- package/src/models/user-system-role.entity.ts +48 -0
- package/src/models/user-user-group.entity.ts +59 -0
- package/src/models/user.entity.ts +110 -0
- package/dist/src/mail/index.d.ts +0 -2
- package/dist/src/mail/index.js +0 -19
- package/dist/src/mail/index.js.map +0 -1
- package/dist/src/mail/interfaces/index.d.ts +0 -2
- package/dist/src/mail/interfaces/index.js +0 -19
- package/dist/src/mail/interfaces/index.js.map +0 -1
- package/dist/src/mail/interfaces/send-mail.interface.d.ts +0 -8
- package/dist/src/mail/interfaces/send-mail.interface.js +0 -3
- package/dist/src/mail/interfaces/send-mail.interface.js.map +0 -1
- package/dist/src/mail/interfaces/send-new-login-alert.interface.d.ts +0 -6
- package/dist/src/mail/interfaces/send-new-login-alert.interface.js +0 -3
- package/dist/src/mail/interfaces/send-new-login-alert.interface.js.map +0 -1
- package/dist/src/mail/mail.d.ts +0 -7
- package/dist/src/mail/mail.js +0 -49
- package/dist/src/mail/mail.js.map +0 -1
- package/dist/src/mail/mail.service.d.ts +0 -7
- package/dist/src/mail/mail.service.js +0 -42
- package/dist/src/mail/mail.service.js.map +0 -1
@@ -0,0 +1,13 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
module.exports = {
|
4
|
+
async up(queryInterface, Sequelize) {
|
5
|
+
await queryInterface.addColumn('sso_systemPrivilege','Module', {
|
6
|
+
type: Sequelize.STRING(200),
|
7
|
+
})
|
8
|
+
},
|
9
|
+
|
10
|
+
async down(queryInterface) {
|
11
|
+
queryInterface.removeColumn('sso_systemPrivilege','Module')
|
12
|
+
},
|
13
|
+
};
|
@@ -0,0 +1,78 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
module.exports = {
|
4
|
+
up: async (queryInterface, Sequelize) => {
|
5
|
+
return queryInterface.sequelize.transaction(async (t) => {
|
6
|
+
return await Promise.all([
|
7
|
+
queryInterface.addColumn(
|
8
|
+
'sso_usergroup',
|
9
|
+
'AllowInheritFromParentYN',
|
10
|
+
{
|
11
|
+
type: Sequelize.ENUM(['Y', 'N']),
|
12
|
+
defaultValue: 'N',
|
13
|
+
},
|
14
|
+
{ transaction: t },
|
15
|
+
),
|
16
|
+
queryInterface.addColumn(
|
17
|
+
'sso_usergroup',
|
18
|
+
'FullPath',
|
19
|
+
{
|
20
|
+
type: Sequelize.STRING(1000),
|
21
|
+
allowNull: true,
|
22
|
+
},
|
23
|
+
{ transaction: t },
|
24
|
+
),
|
25
|
+
queryInterface.addColumn(
|
26
|
+
'sso_usergroup',
|
27
|
+
'GroupLevel',
|
28
|
+
{
|
29
|
+
type: Sequelize.INTEGER,
|
30
|
+
allowNull: false,
|
31
|
+
defaultValue: 0,
|
32
|
+
},
|
33
|
+
{ transaction: t },
|
34
|
+
),
|
35
|
+
queryInterface.addColumn(
|
36
|
+
'sso_usergroup',
|
37
|
+
'GroupType',
|
38
|
+
{
|
39
|
+
type: Sequelize.STRING(10),
|
40
|
+
allowNull: true,
|
41
|
+
},
|
42
|
+
{ transaction: t },
|
43
|
+
),
|
44
|
+
queryInterface.addColumn(
|
45
|
+
'sso_usergroup',
|
46
|
+
'ParentGroupCode',
|
47
|
+
{
|
48
|
+
type: Sequelize.STRING(10),
|
49
|
+
allowNull: true,
|
50
|
+
},
|
51
|
+
{ transaction: t },
|
52
|
+
),
|
53
|
+
queryInterface.addColumn(
|
54
|
+
'sso_usergroup',
|
55
|
+
'PersonInCharge',
|
56
|
+
{
|
57
|
+
type: Sequelize.STRING(100),
|
58
|
+
allowNull: true,
|
59
|
+
},
|
60
|
+
{ transaction: t },
|
61
|
+
),
|
62
|
+
]);
|
63
|
+
});
|
64
|
+
},
|
65
|
+
|
66
|
+
down: async (queryInterface) => {
|
67
|
+
return queryInterface.sequelize.transaction(async (t) => {
|
68
|
+
return await Promise.all([
|
69
|
+
queryInterface.removeColumn('sso_usergroup', 'AllowInheritFromParentYN', { transaction: t }),
|
70
|
+
queryInterface.removeColumn('sso_usergroup', 'FullPath', { transaction: t }),
|
71
|
+
queryInterface.removeColumn('sso_usergroup', 'GroupLevel', { transaction: t }),
|
72
|
+
queryInterface.removeColumn('sso_usergroup', 'GroupType', { transaction: t }),
|
73
|
+
queryInterface.removeColumn('sso_usergroup', 'ParentGroupCode', { transaction: t }),
|
74
|
+
queryInterface.removeColumn('sso_usergroup', 'PersonInCharge', { transaction: t }),
|
75
|
+
]);
|
76
|
+
});
|
77
|
+
},
|
78
|
+
};
|
@@ -0,0 +1,38 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
module.exports = {
|
4
|
+
up: async (queryInterface, Sequelize) => {
|
5
|
+
return queryInterface.sequelize.transaction(async (t) => {
|
6
|
+
return await Promise.all([
|
7
|
+
queryInterface.addColumn(
|
8
|
+
'sso_usersystemprivilege',
|
9
|
+
'IsInheritedYN',
|
10
|
+
{
|
11
|
+
type: Sequelize.ENUM(['Y', 'N']),
|
12
|
+
defaultValue: 'N',
|
13
|
+
},
|
14
|
+
{ transaction: t },
|
15
|
+
),
|
16
|
+
queryInterface.addColumn(
|
17
|
+
'sso_usersystemprivilege',
|
18
|
+
'IsRevokedYN',
|
19
|
+
{
|
20
|
+
type: Sequelize.ENUM(['Y', 'N']),
|
21
|
+
defaultValue: 'N',
|
22
|
+
},
|
23
|
+
{ transaction: t },
|
24
|
+
),
|
25
|
+
]);
|
26
|
+
});
|
27
|
+
},
|
28
|
+
|
29
|
+
down: async (queryInterface) => {
|
30
|
+
return queryInterface.sequelize.transaction(async (t) => {
|
31
|
+
return await Promise.all([
|
32
|
+
queryInterface.removeColumn('sso_usersystemprivilege', 'IsInheritedYN', { transaction: t }),
|
33
|
+
queryInterface.removeColumn('sso_usersystemprivilege', 'IsRevokedYN', { transaction: t }),
|
34
|
+
]);
|
35
|
+
});
|
36
|
+
},
|
37
|
+
};
|
38
|
+
'use strict';
|
@@ -0,0 +1,55 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
module.exports = {
|
4
|
+
up: async (queryInterface, Sequelize) => {
|
5
|
+
queryInterface.createTable('sso_UserUserGroup', {
|
6
|
+
UserId: {
|
7
|
+
primaryKey: true,
|
8
|
+
type: Sequelize.INTEGER,
|
9
|
+
allowNull: false,
|
10
|
+
references: {
|
11
|
+
model: 'sso_users',
|
12
|
+
key: 'id',
|
13
|
+
},
|
14
|
+
onDelete: 'CASCADE',
|
15
|
+
onUpdate: 'CASCADE',
|
16
|
+
},
|
17
|
+
GroupCode: {
|
18
|
+
primaryKey: true,
|
19
|
+
type: Sequelize.STRING(191),
|
20
|
+
allowNull: false,
|
21
|
+
references: {
|
22
|
+
model: 'sso_usergroup',
|
23
|
+
key: 'GroupCode',
|
24
|
+
},
|
25
|
+
onDelete: 'CASCADE',
|
26
|
+
onUpdate: 'CASCADE',
|
27
|
+
},
|
28
|
+
SystemId: {
|
29
|
+
type: Sequelize.INTEGER,
|
30
|
+
allowNull: true,
|
31
|
+
references: {
|
32
|
+
model: 'sso_systems',
|
33
|
+
key: 'id',
|
34
|
+
},
|
35
|
+
onDelete: 'CASCADE',
|
36
|
+
onUpdate: 'CASCADE',
|
37
|
+
},
|
38
|
+
CreatedAt: {
|
39
|
+
allowNull: false,
|
40
|
+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP(3)'),
|
41
|
+
type: Sequelize.DATE,
|
42
|
+
},
|
43
|
+
UpdatedAt: {
|
44
|
+
allowNull: false,
|
45
|
+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP(3)'),
|
46
|
+
type: Sequelize.DATE,
|
47
|
+
},
|
48
|
+
});
|
49
|
+
|
50
|
+
},
|
51
|
+
|
52
|
+
down: async (queryInterface) => {
|
53
|
+
await queryInterface.dropTable('sso_UserUserGroup');
|
54
|
+
},
|
55
|
+
};
|
@@ -0,0 +1,49 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
|
4
|
+
module.exports = {
|
5
|
+
up: async (queryInterface, Sequelize) => {
|
6
|
+
queryInterface.createTable('sso_LoginHistories', {
|
7
|
+
Id: {
|
8
|
+
primaryKey: true,
|
9
|
+
autoIncrement: true,
|
10
|
+
type: Sequelize.INTEGER,
|
11
|
+
allowNull: false,
|
12
|
+
},
|
13
|
+
UserId: {
|
14
|
+
type: Sequelize.INTEGER,
|
15
|
+
allowNull: false,
|
16
|
+
references: {
|
17
|
+
model: 'sso_users',
|
18
|
+
key: 'id',
|
19
|
+
},
|
20
|
+
onDelete: 'CASCADE',
|
21
|
+
onUpdate: 'CASCADE',
|
22
|
+
},
|
23
|
+
SystemId: {
|
24
|
+
type: Sequelize.INTEGER,
|
25
|
+
allowNull: false,
|
26
|
+
references: {
|
27
|
+
model: 'sso_systems',
|
28
|
+
key: 'id',
|
29
|
+
},
|
30
|
+
onDelete: 'CASCADE',
|
31
|
+
onUpdate: 'CASCADE',
|
32
|
+
},
|
33
|
+
OriginIP: {
|
34
|
+
type: Sequelize.STRING(191),
|
35
|
+
allowNull: false,
|
36
|
+
},
|
37
|
+
CreatedAt: {
|
38
|
+
type: Sequelize.DATE(3),
|
39
|
+
allowNull: false,
|
40
|
+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP(3)'),
|
41
|
+
},
|
42
|
+
});
|
43
|
+
|
44
|
+
},
|
45
|
+
|
46
|
+
down: async (queryInterface) => {
|
47
|
+
await queryInterface.dropTable('sso_LoginHistories');
|
48
|
+
},
|
49
|
+
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@tomei/sso",
|
3
|
-
"version": "0.8.
|
3
|
+
"version": "0.8.4",
|
4
4
|
"description": "Tomei SSO Package",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"scripts": {
|
@@ -31,8 +31,9 @@
|
|
31
31
|
"@tsconfig/node18": "^2.0.1",
|
32
32
|
"@types/bcrypt": "^5.0.0",
|
33
33
|
"@types/jest": "^29.5.2",
|
34
|
-
"@types/node": "^18.
|
34
|
+
"@types/node": "^18.17.5",
|
35
35
|
"@types/redis": "^4.0.11",
|
36
|
+
"@types/validator": "^13.11.1",
|
36
37
|
"@typescript-eslint/eslint-plugin": "^5.33.0",
|
37
38
|
"dotenv": "^16.1.4",
|
38
39
|
"eslint": "^8.40.0",
|
@@ -57,7 +58,7 @@
|
|
57
58
|
},
|
58
59
|
"peerDependencies": {
|
59
60
|
"@prisma/client": "^4.14.1",
|
60
|
-
"@tomei/general": "^0.
|
61
|
+
"@tomei/general": "^0.3.0",
|
61
62
|
"@types/jest": "^29.5.2",
|
62
63
|
"argon2": "^0.30.3",
|
63
64
|
"cls-hooked": "^4.2.2",
|
@@ -72,6 +73,9 @@
|
|
72
73
|
]
|
73
74
|
},
|
74
75
|
"dependencies": {
|
75
|
-
"@tomei/mailer": "^0.1.3"
|
76
|
+
"@tomei/mailer": "^0.1.3",
|
77
|
+
"reflect-metadata": "^0.1.13",
|
78
|
+
"sequelize": "^6.32.1",
|
79
|
+
"sequelize-typescript": "^2.1.5"
|
76
80
|
}
|
77
81
|
}
|
@@ -1,33 +1,11 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
this._prisma = prisma;
|
11
|
-
}
|
12
|
-
}
|
13
|
-
|
14
|
-
public async create(data: any): Promise<any> {
|
15
|
-
return await this._prisma.loginHistory.create(data);
|
16
|
-
}
|
17
|
-
|
18
|
-
public async findAll(options: any): Promise<any[]> {
|
19
|
-
return await this._prisma.loginHistory.findMany(options);
|
20
|
-
}
|
21
|
-
|
22
|
-
public async findOne(options: any): Promise<any> {
|
23
|
-
return await this._prisma.loginHistory.findFirst(options);
|
24
|
-
}
|
25
|
-
|
26
|
-
public async update(where: any, data: any): Promise<any> {
|
27
|
-
return await this._prisma.loginHistory.update(where, data);
|
28
|
-
}
|
29
|
-
|
30
|
-
public async delete(where: any): Promise<any> {
|
31
|
-
return await this._prisma.loginHistory.delete(where);
|
1
|
+
import LoginHistory from '../../models/login-history.entity';
|
2
|
+
import { RepositoryBase, IRepositoryBase } from '@tomei/general';
|
3
|
+
|
4
|
+
export class LoginHistoryRepository
|
5
|
+
extends RepositoryBase<LoginHistory>
|
6
|
+
implements IRepositoryBase<LoginHistory>
|
7
|
+
{
|
8
|
+
constructor() {
|
9
|
+
super(LoginHistory);
|
32
10
|
}
|
33
11
|
}
|
@@ -13,6 +13,13 @@ import { UserGroupRepository } from '../user-group/user-group.repository';
|
|
13
13
|
import * as nodemailer from 'nodemailer';
|
14
14
|
import { Mailer } from '@tomei/mailer';
|
15
15
|
import { ISystemLogin } from '../../../src/interfaces/system-login.interface';
|
16
|
+
import Staff from '../../models/staff.entity';
|
17
|
+
import SystemPrivilege from '../../models/system-privilege.entity';
|
18
|
+
import LoginHistory from '../../models/login-history.entity';
|
19
|
+
import GroupSystemPrivilege from '../../models/group-system-privilege.entity';
|
20
|
+
import GroupRolePrivilege from '../../models/group-role-privilege.entity';
|
21
|
+
import UserGroup from '../../models/user-group.entity';
|
22
|
+
import UserSystemPrivileges from '../../models/user-system-privileges.entity';
|
16
23
|
export class LoginUser extends ObjectBase implements IPerson {
|
17
24
|
FullName: string;
|
18
25
|
IDNo: string;
|
@@ -35,6 +42,7 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
35
42
|
private static _LoginHistoryRepository = new LoginHistoryRepository();
|
36
43
|
private static _UserUserGroupRepository = new UserUserGroupRepository();
|
37
44
|
private static _UserGroupRepository = new UserGroupRepository();
|
45
|
+
private _dbTransaction: any;
|
38
46
|
|
39
47
|
getDetails(): {
|
40
48
|
FullName: string;
|
@@ -63,18 +71,7 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
63
71
|
// this._MailService = new MailService();
|
64
72
|
|
65
73
|
if (dbTransaction) {
|
66
|
-
|
67
|
-
LoginUser._SystemRepository = new SystemRepository(dbTransaction);
|
68
|
-
LoginUser._SystemAccessRepository = new SystemAccessRepository(
|
69
|
-
dbTransaction,
|
70
|
-
);
|
71
|
-
LoginUser._LoginHistoryRepository = new LoginHistoryRepository(
|
72
|
-
dbTransaction,
|
73
|
-
);
|
74
|
-
LoginUser._UserUserGroupRepository = new UserUserGroupRepository(
|
75
|
-
dbTransaction,
|
76
|
-
);
|
77
|
-
LoginUser._UserGroupRepository = new UserGroupRepository(dbTransaction);
|
74
|
+
this._dbTransaction = dbTransaction;
|
78
75
|
}
|
79
76
|
// set all the class properties
|
80
77
|
if (userInfo) {
|
@@ -93,31 +90,34 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
93
90
|
|
94
91
|
if (userId) {
|
95
92
|
if (dbTransaction) {
|
96
|
-
LoginUser._Repository = new UserRepository(
|
93
|
+
LoginUser._Repository = new UserRepository();
|
97
94
|
}
|
98
95
|
const user = await LoginUser._Repository.findOne({
|
99
96
|
where: {
|
100
97
|
id: Number(userId),
|
101
98
|
},
|
102
|
-
include:
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
99
|
+
include: [
|
100
|
+
{
|
101
|
+
model: Staff,
|
102
|
+
},
|
103
|
+
{
|
104
|
+
model: SystemPrivilege,
|
105
|
+
Include: {
|
106
|
+
model: SystemPrivilege,
|
107
107
|
},
|
108
108
|
},
|
109
|
-
|
109
|
+
],
|
110
110
|
});
|
111
111
|
|
112
112
|
if (user) {
|
113
113
|
const userInfo: IUserInfo = {
|
114
|
-
ObjectId: user.id,
|
115
|
-
FullName: user.
|
116
|
-
IDNo: user.
|
117
|
-
ContactNo: user.
|
118
|
-
Email: user.
|
119
|
-
Password: user.
|
120
|
-
staffs: user.
|
114
|
+
ObjectId: user.id.toString(),
|
115
|
+
FullName: user.Staff[0].name,
|
116
|
+
IDNo: user.Staff[0].idNo,
|
117
|
+
ContactNo: user.Staff[0].contactNo,
|
118
|
+
Email: user.Staff[0].email,
|
119
|
+
Password: user.Password,
|
120
|
+
staffs: user.Staff[0],
|
121
121
|
};
|
122
122
|
|
123
123
|
return new LoginUser(sessionService, dbTransaction, userInfo);
|
@@ -164,7 +164,7 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
164
164
|
//validate system access
|
165
165
|
await this.checkSystemAccess(this.ObjectId, system.id);
|
166
166
|
// alert user if new login
|
167
|
-
await this.alertNewLogin(this.ObjectId, system.id, ipAddress);
|
167
|
+
await this.alertNewLogin(this.ObjectId, system.id.toString(), ipAddress);
|
168
168
|
|
169
169
|
// fetch user session if exists
|
170
170
|
const userSession = await this._SessionService.retrieveUserSession(
|
@@ -187,9 +187,9 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
187
187
|
// if not, add new system login into the userSession
|
188
188
|
const newLogin = {
|
189
189
|
id: system.id.toString(),
|
190
|
-
code: system.
|
190
|
+
code: system.Code,
|
191
191
|
sessionId: sessionId,
|
192
|
-
privileges: await this.getPrivileges(system.
|
192
|
+
privileges: await this.getPrivileges(system.Code),
|
193
193
|
};
|
194
194
|
userSession.systemLogins.push(newLogin);
|
195
195
|
}
|
@@ -242,9 +242,9 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
242
242
|
});
|
243
243
|
|
244
244
|
const gotPreviousLogins = userLogins?.length !== 0;
|
245
|
-
let ipFound =
|
245
|
+
let ipFound: LoginHistory | undefined = undefined;
|
246
246
|
if (gotPreviousLogins) {
|
247
|
-
ipFound = userLogins.find((item) => item.
|
247
|
+
ipFound = userLogins.find((item) => item.OriginIp === ipAddress);
|
248
248
|
}
|
249
249
|
|
250
250
|
if (gotPreviousLogins && !ipFound) {
|
@@ -299,25 +299,25 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
299
299
|
const userUserGroups = await this.getUserUserGroupFromDB(system.id);
|
300
300
|
|
301
301
|
// get all userGroup data from user userGroups
|
302
|
-
const userGroupData = userUserGroups.map((u) => u.
|
302
|
+
const userGroupData = userUserGroups.map((u) => u.UserGroup);
|
303
303
|
// get all privileges from userGroup data
|
304
304
|
let privileges: string[] = [];
|
305
305
|
for (const userGroup of userGroupData) {
|
306
|
-
const groupSystemPrivileges = userGroup.
|
307
|
-
(g) => g.
|
306
|
+
const groupSystemPrivileges = userGroup.GroupSystemPrivileges.map(
|
307
|
+
(g) => g.SystemPrivilege.Code,
|
308
308
|
);
|
309
|
-
const groupRolePrivileges = userGroup.
|
310
|
-
(g) => g.
|
309
|
+
const groupRolePrivileges = userGroup.GroupRolePrivileges.map(
|
310
|
+
(g) => g.SystemPrivilege.Code,
|
311
311
|
);
|
312
312
|
|
313
313
|
// if userGroup is not root, get all parent tree privileges
|
314
314
|
if (
|
315
|
-
userGroup.
|
316
|
-
userGroup.
|
315
|
+
userGroup.GroupLevel !== 0 &&
|
316
|
+
userGroup.AllowInheritFromParentYN === 'Y'
|
317
317
|
) {
|
318
318
|
// get all parent tree privileges
|
319
319
|
const parentTreePrivileges = await this.getPrivilegesFromUserGroup(
|
320
|
-
userGroup.
|
320
|
+
userGroup.ParentGroupCode,
|
321
321
|
);
|
322
322
|
|
323
323
|
privileges = [...privileges, ...parentTreePrivileges];
|
@@ -380,18 +380,20 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
380
380
|
where: {
|
381
381
|
groupCode: groupCode,
|
382
382
|
},
|
383
|
-
include:
|
384
|
-
|
383
|
+
include: [
|
384
|
+
{
|
385
|
+
model: GroupSystemPrivilege,
|
385
386
|
include: {
|
386
|
-
|
387
|
+
model: SystemPrivilege,
|
387
388
|
},
|
388
389
|
},
|
389
|
-
|
390
|
+
{
|
391
|
+
model: GroupRolePrivilege,
|
390
392
|
include: {
|
391
|
-
|
393
|
+
model: SystemPrivilege,
|
392
394
|
},
|
393
395
|
},
|
394
|
-
|
396
|
+
],
|
395
397
|
});
|
396
398
|
return userGroup;
|
397
399
|
} catch (error) {
|
@@ -407,20 +409,21 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
407
409
|
systemId: systemCode,
|
408
410
|
},
|
409
411
|
include: {
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
412
|
+
model: UserGroup,
|
413
|
+
include: [
|
414
|
+
{
|
415
|
+
model: GroupSystemPrivilege,
|
416
|
+
include: {
|
417
|
+
model: SystemPrivilege,
|
416
418
|
},
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
419
|
+
},
|
420
|
+
{
|
421
|
+
model: GroupRolePrivilege,
|
422
|
+
include: {
|
423
|
+
model: SystemPrivilege,
|
421
424
|
},
|
422
425
|
},
|
423
|
-
|
426
|
+
],
|
424
427
|
},
|
425
428
|
});
|
426
429
|
} catch (error) {
|
@@ -435,24 +438,21 @@ export class LoginUser extends ObjectBase implements IPerson {
|
|
435
438
|
id: this.ObjectId,
|
436
439
|
},
|
437
440
|
include: {
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
},
|
441
|
+
model: UserSystemPrivileges,
|
442
|
+
include: {
|
443
|
+
model: SystemPrivilege,
|
442
444
|
},
|
443
445
|
},
|
444
446
|
});
|
445
447
|
|
446
448
|
//retrive all user systemPrevileges data from user roles
|
447
|
-
let userSystemPrivileges = userRole.
|
448
|
-
(u) => u.systemPrivilege,
|
449
|
-
);
|
449
|
+
let userSystemPrivileges = userRole.SystemPrivileges;
|
450
450
|
|
451
451
|
userSystemPrivileges = userSystemPrivileges.filter(
|
452
|
-
(u) => u.
|
452
|
+
(u) => u.SystemId === systemId,
|
453
453
|
);
|
454
454
|
|
455
|
-
const userPrivileges: string[] = userSystemPrivileges.map((u) => u.
|
455
|
+
const userPrivileges: string[] = userSystemPrivileges.map((u) => u.Code);
|
456
456
|
return userPrivileges;
|
457
457
|
} catch (error) {
|
458
458
|
throw error;
|
@@ -1,33 +1,11 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
this._prisma = prisma;
|
11
|
-
}
|
12
|
-
}
|
13
|
-
|
14
|
-
public async create(data: any): Promise<any> {
|
15
|
-
return await this._prisma.user.create(data);
|
16
|
-
}
|
17
|
-
|
18
|
-
public async findAll(options: any): Promise<any[]> {
|
19
|
-
return await this._prisma.user.findMany(options);
|
20
|
-
}
|
21
|
-
|
22
|
-
public async findOne(options: any): Promise<any> {
|
23
|
-
return await this._prisma.user.findFirst(options);
|
24
|
-
}
|
25
|
-
|
26
|
-
public async update(where: any, data: any): Promise<any> {
|
27
|
-
return await this._prisma.user.update(where, data);
|
28
|
-
}
|
29
|
-
|
30
|
-
public async delete(where: any): Promise<any> {
|
31
|
-
return await this._prisma.user.delete(where);
|
1
|
+
import User from '../../models/user.entity';
|
2
|
+
import { RepositoryBase, IRepositoryBase } from '@tomei/general';
|
3
|
+
|
4
|
+
export class UserRepository
|
5
|
+
extends RepositoryBase<User>
|
6
|
+
implements IRepositoryBase<User>
|
7
|
+
{
|
8
|
+
constructor() {
|
9
|
+
super(User);
|
32
10
|
}
|
33
11
|
}
|
@@ -1,33 +1,11 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
this._prisma = prisma;
|
11
|
-
}
|
12
|
-
}
|
13
|
-
|
14
|
-
public async create(data: any): Promise<any> {
|
15
|
-
return await this._prisma.system.create(data);
|
16
|
-
}
|
17
|
-
|
18
|
-
public async findAll(options: any): Promise<any[]> {
|
19
|
-
return await this._prisma.system.findMany(options);
|
20
|
-
}
|
21
|
-
|
22
|
-
public async findOne(options: any): Promise<any> {
|
23
|
-
return await this._prisma.system.findFirst(options);
|
24
|
-
}
|
25
|
-
|
26
|
-
public async update(where: any, data: any): Promise<any> {
|
27
|
-
return await this._prisma.system.update(where, data);
|
28
|
-
}
|
29
|
-
|
30
|
-
public async delete(where: any): Promise<any> {
|
31
|
-
return await this._prisma.system.delete(where);
|
1
|
+
import System from '../../models/system.entity';
|
2
|
+
import { RepositoryBase, IRepositoryBase } from '@tomei/general';
|
3
|
+
|
4
|
+
export class SystemRepository
|
5
|
+
extends RepositoryBase<System>
|
6
|
+
implements IRepositoryBase<System>
|
7
|
+
{
|
8
|
+
constructor() {
|
9
|
+
super(System);
|
32
10
|
}
|
33
11
|
}
|