@tomei/sso 0.15.10 → 0.16.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/.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/login-user/login-user.spec.ts +742 -742
- package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +31 -31
- 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 +15 -15
- package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +1 -1
- package/dist/src/components/building/building.d.ts +10 -3
- package/dist/src/components/building/building.js +12 -1
- package/dist/src/components/building/building.js.map +1 -1
- package/dist/src/components/login-user/interfaces/user-info.interface.d.ts +19 -1
- package/dist/src/components/login-user/login-user.d.ts +54 -9
- package/dist/src/components/login-user/login-user.js +177 -29
- package/dist/src/components/login-user/login-user.js.map +1 -1
- package/dist/src/components/staff/staff.d.ts +1 -1
- package/dist/src/components/staff/staff.js +1 -1
- package/dist/src/components/staff/staff.js.map +1 -1
- package/dist/src/enum/index.d.ts +1 -0
- package/dist/src/enum/index.js +18 -0
- package/dist/src/enum/index.js.map +1 -0
- package/dist/src/enum/yn.enum.d.ts +4 -0
- package/dist/src/enum/yn.enum.js +9 -0
- package/dist/src/enum/yn.enum.js.map +1 -0
- package/dist/src/models/user.entity.d.ts +16 -6
- package/dist/src/models/user.entity.js +85 -25
- package/dist/src/models/user.entity.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/jest.config.js +13 -13
- package/migrations/01-alter-system-privilege-table.js +13 -13
- package/migrations/02-alter-user-group-table.js +78 -78
- package/migrations/03-alter-user-system-privilege-table.js +38 -38
- package/migrations/20240314080603-create-user-table.js +108 -0
- package/migrations/{04-create-user-user-group-table.js → 20240314080604-create-user-user-group-table.js} +55 -55
- package/migrations/{05-create-login-history-table.js → 20240314080605-create-login-history-table.js} +49 -49
- package/package.json +80 -79
- package/sampledotenv +7 -7
- package/src/components/building/building.ts +18 -3
- package/src/components/login-user/interfaces/user-info.interface.ts +29 -9
- package/src/components/login-user/login-user.ts +749 -557
- package/src/components/staff/staff.ts +4 -2
- package/src/enum/index.ts +1 -0
- package/src/enum/yn.enum.ts +4 -0
- package/src/models/user.entity.ts +160 -110
- package/tsconfig.build.json +5 -5
- package/tsconfig.json +23 -23
@@ -1,32 +1,32 @@
|
|
1
|
-
import { PasswordHashService } from "../../../../src/components/password-hash/password-hash.service";
|
2
|
-
|
3
|
-
jest.mock('argon2', () => {
|
4
|
-
return {
|
5
|
-
hash: jest.fn((passowrd) => {
|
6
|
-
return `hash${passowrd}`;
|
7
|
-
}),
|
8
|
-
verify: jest.fn().mockResolvedValue(true)
|
9
|
-
}
|
10
|
-
})
|
11
|
-
|
12
|
-
describe('password-hash.service', () => {
|
13
|
-
const passwordHashService = new PasswordHashService();
|
14
|
-
afterEach(() => {
|
15
|
-
jest.clearAllMocks();
|
16
|
-
});
|
17
|
-
|
18
|
-
it('should return hash password', async () => {
|
19
|
-
const password = 'password';
|
20
|
-
const hash = await passwordHashService.hashPassword(password);
|
21
|
-
expect(hash).toEqual('hashpassword');
|
22
|
-
})
|
23
|
-
|
24
|
-
it('should return true when verify password', async () => {
|
25
|
-
const password = 'password';
|
26
|
-
const hash = 'hashpassword10';
|
27
|
-
const result = await passwordHashService.verify(password, hash);
|
28
|
-
expect(result).toEqual(true);
|
29
|
-
});
|
30
|
-
|
31
|
-
|
1
|
+
import { PasswordHashService } from "../../../../src/components/password-hash/password-hash.service";
|
2
|
+
|
3
|
+
jest.mock('argon2', () => {
|
4
|
+
return {
|
5
|
+
hash: jest.fn((passowrd) => {
|
6
|
+
return `hash${passowrd}`;
|
7
|
+
}),
|
8
|
+
verify: jest.fn().mockResolvedValue(true)
|
9
|
+
}
|
10
|
+
})
|
11
|
+
|
12
|
+
describe('password-hash.service', () => {
|
13
|
+
const passwordHashService = new PasswordHashService();
|
14
|
+
afterEach(() => {
|
15
|
+
jest.clearAllMocks();
|
16
|
+
});
|
17
|
+
|
18
|
+
it('should return hash password', async () => {
|
19
|
+
const password = 'password';
|
20
|
+
const hash = await passwordHashService.hashPassword(password);
|
21
|
+
expect(hash).toEqual('hashpassword');
|
22
|
+
})
|
23
|
+
|
24
|
+
it('should return true when verify password', async () => {
|
25
|
+
const password = 'password';
|
26
|
+
const hash = 'hashpassword10';
|
27
|
+
const result = await passwordHashService.verify(password, hash);
|
28
|
+
expect(result).toEqual(true);
|
29
|
+
});
|
30
|
+
|
31
|
+
|
32
32
|
})
|
@@ -1,24 +1,24 @@
|
|
1
|
-
import { RedisService } from "../../../src/redis-client/redis.service";
|
2
|
-
require('dotenv').config()
|
3
|
-
// nneed to figure out how to mock redis
|
4
|
-
describe('redis.service', () => {
|
5
|
-
|
6
|
-
afterEach(() => {
|
7
|
-
jest.restoreAllMocks()
|
8
|
-
})
|
9
|
-
|
10
|
-
it('should return redis service when instansiated', async () => {
|
11
|
-
const redisService = await RedisService.init();
|
12
|
-
expect(redisService).toBeDefined();
|
13
|
-
});
|
14
|
-
|
15
|
-
it('should able to write and read redis', async () => {
|
16
|
-
const data = {
|
17
|
-
test: 'test'
|
18
|
-
}
|
19
|
-
const redisService = await RedisService.init();
|
20
|
-
await redisService.set("test", data, 60 * 60 * 24 * 1)
|
21
|
-
const result = await redisService.get("test");
|
22
|
-
expect(result).toEqual(JSON.stringify(data));
|
23
|
-
});
|
1
|
+
import { RedisService } from "../../../src/redis-client/redis.service";
|
2
|
+
require('dotenv').config()
|
3
|
+
// nneed to figure out how to mock redis
|
4
|
+
describe('redis.service', () => {
|
5
|
+
|
6
|
+
afterEach(() => {
|
7
|
+
jest.restoreAllMocks()
|
8
|
+
})
|
9
|
+
|
10
|
+
it('should return redis service when instansiated', async () => {
|
11
|
+
const redisService = await RedisService.init();
|
12
|
+
expect(redisService).toBeDefined();
|
13
|
+
});
|
14
|
+
|
15
|
+
it('should able to write and read redis', async () => {
|
16
|
+
const data = {
|
17
|
+
test: 'test'
|
18
|
+
}
|
19
|
+
const redisService = await RedisService.init();
|
20
|
+
await redisService.set("test", data, 60 * 60 * 24 * 1)
|
21
|
+
const result = await redisService.get("test");
|
22
|
+
expect(result).toEqual(JSON.stringify(data));
|
23
|
+
});
|
24
24
|
});
|
@@ -1,47 +1,47 @@
|
|
1
|
-
import { IUserSession } from '../../../src/interfaces/user-session.interface';
|
2
|
-
import { SessionService } from '../../../src/session/session.service';
|
3
|
-
require('dotenv').config()
|
4
|
-
|
5
|
-
describe('session.service', () => {
|
6
|
-
it('should return session service when instansiated', async () => {
|
7
|
-
const sessionService = await SessionService.init();
|
8
|
-
expect(sessionService).toBeDefined();
|
9
|
-
});
|
10
|
-
|
11
|
-
it('should able to write session data', async () => {
|
12
|
-
const data: IUserSession = {
|
13
|
-
systemLogins: [
|
14
|
-
{
|
15
|
-
id: '1',
|
16
|
-
code: 'EZC',
|
17
|
-
sessionId: 'test1',
|
18
|
-
privileges: ['PRIVILEGE1', 'PRIVILEGE2'],
|
19
|
-
},
|
20
|
-
],
|
21
|
-
};
|
22
|
-
const sessionService = await SessionService.init();
|
23
|
-
await sessionService.setUserSession("1", data)
|
24
|
-
const result = await sessionService.retrieveUserSession("1");
|
25
|
-
expect(result).toEqual(data);
|
26
|
-
});
|
27
|
-
|
28
|
-
it('should able to refresh session data', async () => {
|
29
|
-
const setUserSession = jest.spyOn(SessionService.prototype, 'setUserSession');
|
30
|
-
const retrieveUserSession = jest.spyOn(SessionService.prototype, 'retrieveUserSession');
|
31
|
-
const data: IUserSession = {
|
32
|
-
systemLogins: [
|
33
|
-
{
|
34
|
-
id: '1',
|
35
|
-
code: 'EZC',
|
36
|
-
sessionId: 'test1',
|
37
|
-
privileges: ['PRIVILEGE1', 'PRIVILEGE2'],
|
38
|
-
},
|
39
|
-
],
|
40
|
-
};
|
41
|
-
const sessionService = await SessionService.init();
|
42
|
-
await sessionService.setUserSession("1", data)
|
43
|
-
await sessionService.refreshDuration("1");
|
44
|
-
expect(setUserSession).toBeCalledTimes(2);
|
45
|
-
expect(retrieveUserSession).toBeCalledTimes(1);
|
46
|
-
});
|
47
|
-
});
|
1
|
+
import { IUserSession } from '../../../src/interfaces/user-session.interface';
|
2
|
+
import { SessionService } from '../../../src/session/session.service';
|
3
|
+
require('dotenv').config()
|
4
|
+
|
5
|
+
describe('session.service', () => {
|
6
|
+
it('should return session service when instansiated', async () => {
|
7
|
+
const sessionService = await SessionService.init();
|
8
|
+
expect(sessionService).toBeDefined();
|
9
|
+
});
|
10
|
+
|
11
|
+
it('should able to write session data', async () => {
|
12
|
+
const data: IUserSession = {
|
13
|
+
systemLogins: [
|
14
|
+
{
|
15
|
+
id: '1',
|
16
|
+
code: 'EZC',
|
17
|
+
sessionId: 'test1',
|
18
|
+
privileges: ['PRIVILEGE1', 'PRIVILEGE2'],
|
19
|
+
},
|
20
|
+
],
|
21
|
+
};
|
22
|
+
const sessionService = await SessionService.init();
|
23
|
+
await sessionService.setUserSession("1", data)
|
24
|
+
const result = await sessionService.retrieveUserSession("1");
|
25
|
+
expect(result).toEqual(data);
|
26
|
+
});
|
27
|
+
|
28
|
+
it('should able to refresh session data', async () => {
|
29
|
+
const setUserSession = jest.spyOn(SessionService.prototype, 'setUserSession');
|
30
|
+
const retrieveUserSession = jest.spyOn(SessionService.prototype, 'retrieveUserSession');
|
31
|
+
const data: IUserSession = {
|
32
|
+
systemLogins: [
|
33
|
+
{
|
34
|
+
id: '1',
|
35
|
+
code: 'EZC',
|
36
|
+
sessionId: 'test1',
|
37
|
+
privileges: ['PRIVILEGE1', 'PRIVILEGE2'],
|
38
|
+
},
|
39
|
+
],
|
40
|
+
};
|
41
|
+
const sessionService = await SessionService.init();
|
42
|
+
await sessionService.setUserSession("1", data)
|
43
|
+
await sessionService.refreshDuration("1");
|
44
|
+
expect(setUserSession).toBeCalledTimes(2);
|
45
|
+
expect(retrieveUserSession).toBeCalledTimes(1);
|
46
|
+
});
|
47
|
+
});
|
@@ -1,91 +1,91 @@
|
|
1
|
-
// import { Privilege } from '../../../src/components/system-privilege/privilege';
|
2
|
-
// import { SystemPrivilegeRepository } from '../../../src/components/system-privilege/system-privilege.repository';
|
3
|
-
// import { SystemRepository } from '../../../src/components/system/system.repository';
|
4
|
-
// describe('SystemPrivilege', () => {
|
5
|
-
// afterEach(async () => {
|
6
|
-
// jest.restoreAllMocks();
|
7
|
-
// });
|
8
|
-
// it('should be able to load single package privileges', async () => {
|
9
|
-
// let privilegeCalled = 0;
|
10
|
-
// const findOrCreateMock = jest
|
11
|
-
// .spyOn(SystemPrivilegeRepository.prototype, 'findOrCreate')
|
12
|
-
// .mockResolvedValueOnce([{}, true] as any);
|
13
|
-
|
14
|
-
// const systemRepositoryMock = jest
|
15
|
-
// .spyOn(SystemRepository.prototype, 'findOne')
|
16
|
-
// .mockResolvedValueOnce({
|
17
|
-
// id: 175,
|
18
|
-
// } as any);
|
19
|
-
|
20
|
-
// jest.mock('@tomei/mailer/privileges.json', () => {
|
21
|
-
// privilegeCalled++;
|
22
|
-
// return {
|
23
|
-
// Privileges: [
|
24
|
-
// {
|
25
|
-
// Code: 'Privilege1',
|
26
|
-
// Description: 'This is Privilege1',
|
27
|
-
// },
|
28
|
-
// ],
|
29
|
-
// };
|
30
|
-
// });
|
31
|
-
|
32
|
-
// await Privilege.loadPrivileges('mailer', 'EZC');
|
33
|
-
// expect(findOrCreateMock).toBeCalledTimes(1);
|
34
|
-
// expect(systemRepositoryMock).toBeCalledTimes(1);
|
35
|
-
// expect(privilegeCalled).toEqual(1);
|
36
|
-
// });
|
37
|
-
|
38
|
-
// it('should be able to load multiple package privileges', async () => {
|
39
|
-
// let privilegeCalled = 0;
|
40
|
-
// const findOrCreateMock = jest
|
41
|
-
// .spyOn(SystemPrivilegeRepository.prototype, 'findOrCreate')
|
42
|
-
// .mockResolvedValueOnce([{}, true] as any);
|
43
|
-
|
44
|
-
// const systemRepositoryMock = jest
|
45
|
-
// .spyOn(SystemRepository.prototype, 'findOne')
|
46
|
-
// .mockResolvedValueOnce({
|
47
|
-
// id: 175,
|
48
|
-
// } as any);
|
49
|
-
|
50
|
-
// jest.mock(
|
51
|
-
// '@tomei/mailer/privileges.json',
|
52
|
-
// () => {
|
53
|
-
// privilegeCalled++;
|
54
|
-
// return {
|
55
|
-
// Privileges: [
|
56
|
-
// {
|
57
|
-
// Code: 'Privilege1',
|
58
|
-
// Description: 'This is Privilege1',
|
59
|
-
// },
|
60
|
-
// ],
|
61
|
-
// };
|
62
|
-
// },
|
63
|
-
// );
|
64
|
-
|
65
|
-
// jest.mock(
|
66
|
-
// '@tomei/config/privileges.json',
|
67
|
-
// () => {
|
68
|
-
// privilegeCalled++;
|
69
|
-
// return {
|
70
|
-
// Privileges: [
|
71
|
-
// {
|
72
|
-
// Code: 'Privilege2',
|
73
|
-
// Description: 'This is Privilege2',
|
74
|
-
// },
|
75
|
-
// ],
|
76
|
-
// };
|
77
|
-
// },
|
78
|
-
// );
|
79
|
-
|
80
|
-
// await Privilege.loadPrivileges(['mailer', 'config'], 'EZC');
|
81
|
-
// expect(findOrCreateMock).toBeCalledTimes(2);
|
82
|
-
// expect(systemRepositoryMock).toBeCalledTimes(1);
|
83
|
-
// expect(privilegeCalled).toEqual(2);
|
84
|
-
// });
|
85
|
-
// });
|
86
|
-
|
87
|
-
describe('SystemPrivilege', () => {
|
88
|
-
it('should be true', () => {
|
89
|
-
expect(true).toBe(true);
|
90
|
-
});
|
91
|
-
});
|
1
|
+
// import { Privilege } from '../../../src/components/system-privilege/privilege';
|
2
|
+
// import { SystemPrivilegeRepository } from '../../../src/components/system-privilege/system-privilege.repository';
|
3
|
+
// import { SystemRepository } from '../../../src/components/system/system.repository';
|
4
|
+
// describe('SystemPrivilege', () => {
|
5
|
+
// afterEach(async () => {
|
6
|
+
// jest.restoreAllMocks();
|
7
|
+
// });
|
8
|
+
// it('should be able to load single package privileges', async () => {
|
9
|
+
// let privilegeCalled = 0;
|
10
|
+
// const findOrCreateMock = jest
|
11
|
+
// .spyOn(SystemPrivilegeRepository.prototype, 'findOrCreate')
|
12
|
+
// .mockResolvedValueOnce([{}, true] as any);
|
13
|
+
|
14
|
+
// const systemRepositoryMock = jest
|
15
|
+
// .spyOn(SystemRepository.prototype, 'findOne')
|
16
|
+
// .mockResolvedValueOnce({
|
17
|
+
// id: 175,
|
18
|
+
// } as any);
|
19
|
+
|
20
|
+
// jest.mock('@tomei/mailer/privileges.json', () => {
|
21
|
+
// privilegeCalled++;
|
22
|
+
// return {
|
23
|
+
// Privileges: [
|
24
|
+
// {
|
25
|
+
// Code: 'Privilege1',
|
26
|
+
// Description: 'This is Privilege1',
|
27
|
+
// },
|
28
|
+
// ],
|
29
|
+
// };
|
30
|
+
// });
|
31
|
+
|
32
|
+
// await Privilege.loadPrivileges('mailer', 'EZC');
|
33
|
+
// expect(findOrCreateMock).toBeCalledTimes(1);
|
34
|
+
// expect(systemRepositoryMock).toBeCalledTimes(1);
|
35
|
+
// expect(privilegeCalled).toEqual(1);
|
36
|
+
// });
|
37
|
+
|
38
|
+
// it('should be able to load multiple package privileges', async () => {
|
39
|
+
// let privilegeCalled = 0;
|
40
|
+
// const findOrCreateMock = jest
|
41
|
+
// .spyOn(SystemPrivilegeRepository.prototype, 'findOrCreate')
|
42
|
+
// .mockResolvedValueOnce([{}, true] as any);
|
43
|
+
|
44
|
+
// const systemRepositoryMock = jest
|
45
|
+
// .spyOn(SystemRepository.prototype, 'findOne')
|
46
|
+
// .mockResolvedValueOnce({
|
47
|
+
// id: 175,
|
48
|
+
// } as any);
|
49
|
+
|
50
|
+
// jest.mock(
|
51
|
+
// '@tomei/mailer/privileges.json',
|
52
|
+
// () => {
|
53
|
+
// privilegeCalled++;
|
54
|
+
// return {
|
55
|
+
// Privileges: [
|
56
|
+
// {
|
57
|
+
// Code: 'Privilege1',
|
58
|
+
// Description: 'This is Privilege1',
|
59
|
+
// },
|
60
|
+
// ],
|
61
|
+
// };
|
62
|
+
// },
|
63
|
+
// );
|
64
|
+
|
65
|
+
// jest.mock(
|
66
|
+
// '@tomei/config/privileges.json',
|
67
|
+
// () => {
|
68
|
+
// privilegeCalled++;
|
69
|
+
// return {
|
70
|
+
// Privileges: [
|
71
|
+
// {
|
72
|
+
// Code: 'Privilege2',
|
73
|
+
// Description: 'This is Privilege2',
|
74
|
+
// },
|
75
|
+
// ],
|
76
|
+
// };
|
77
|
+
// },
|
78
|
+
// );
|
79
|
+
|
80
|
+
// await Privilege.loadPrivileges(['mailer', 'config'], 'EZC');
|
81
|
+
// expect(findOrCreateMock).toBeCalledTimes(2);
|
82
|
+
// expect(systemRepositoryMock).toBeCalledTimes(1);
|
83
|
+
// expect(privilegeCalled).toEqual(2);
|
84
|
+
// });
|
85
|
+
// });
|
86
|
+
|
87
|
+
describe('SystemPrivilege', () => {
|
88
|
+
it('should be true', () => {
|
89
|
+
expect(true).toBe(true);
|
90
|
+
});
|
91
|
+
});
|
package/create-sso-user.sql
CHANGED
@@ -1,40 +1,40 @@
|
|
1
|
-
|
2
|
-
-- example to create sso-user
|
3
|
-
CREATE USER 'sso_user'@'environment' IDENTIFIED BY 'password';
|
4
|
-
|
5
|
-
-- example to grant neccesary access to run migration
|
6
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_authorization_codes TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
7
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_bearer_tokens TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
8
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_building_types TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
9
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_buildings TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
10
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_cities TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
11
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_companies TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
12
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_countries TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
13
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_departments TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
14
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_grouproleprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
15
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemaccess TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
16
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
17
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemrole TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
18
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_oauth_tokens TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
19
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_roles TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
20
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_sequelize_meta TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
21
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_staff_types TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
22
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_staffs TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
23
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_states TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
24
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_system_accesses TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
25
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
26
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemrole TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
27
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemroleprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
28
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systems TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
29
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_updated_history TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
30
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_user_roles TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
31
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usergroup TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
32
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_users TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
33
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usersystemprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
34
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usersystemrole TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
35
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_UserUserGroup TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
36
|
-
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production._prisma_migrations TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
37
|
-
|
38
|
-
|
39
|
-
-- Grant user to create, alter, drop, references on the database (required for creating shadow tables)
|
1
|
+
|
2
|
+
-- example to create sso-user
|
3
|
+
CREATE USER 'sso_user'@'environment' IDENTIFIED BY 'password';
|
4
|
+
|
5
|
+
-- example to grant neccesary access to run migration
|
6
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_authorization_codes TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
7
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_bearer_tokens TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
8
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_building_types TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
9
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_buildings TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
10
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_cities TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
11
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_companies TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
12
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_countries TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
13
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_departments TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
14
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_grouproleprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
15
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemaccess TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
16
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
17
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemrole TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
18
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_oauth_tokens TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
19
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_roles TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
20
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_sequelize_meta TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
21
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_staff_types TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
22
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_staffs TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
23
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_states TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
24
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_system_accesses TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
25
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
26
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemrole TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
27
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemroleprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
28
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systems TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
29
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_updated_history TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
30
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_user_roles TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
31
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usergroup TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
32
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_users TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
33
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usersystemprivilege TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
34
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usersystemrole TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
35
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_UserUserGroup TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
36
|
+
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production._prisma_migrations TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
37
|
+
|
38
|
+
|
39
|
+
-- Grant user to create, alter, drop, references on the database (required for creating shadow tables)
|
40
40
|
GRANT CREATE, ALTER, DROP, REFERENCES ON shadow_database.* TO 'sso_user'@'localhost' WITH GRANT OPTION;
|
@@ -470,13 +470,13 @@ describe('login-user', () => {
|
|
470
470
|
}));
|
471
471
|
it('should able to do login process when no session is already available', () => __awaiter(void 0, void 0, void 0, function* () {
|
472
472
|
const sessionService = yield src_1.SessionService.init();
|
473
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
473
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
474
474
|
const result = yield loginUser.login('EZC', 'ezcash+florence@tomei.com.my', 'Abcd@1234', '1.1.1.1');
|
475
475
|
expect(result).toEqual('755:ckymxuh8t000137t011w89zgk');
|
476
476
|
}));
|
477
477
|
it('should able to do login process when session is already available', () => __awaiter(void 0, void 0, void 0, function* () {
|
478
478
|
const sessionService = yield src_1.SessionService.init();
|
479
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
479
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
480
480
|
const result = yield loginUser.login('EZC', 'ezcash+florence@tomei.com.my', 'Abcd@1234', '1.1.1.1');
|
481
481
|
expect(result).toEqual('755:ckymxuh8t000137t011w89zgk');
|
482
482
|
}));
|
@@ -487,7 +487,7 @@ describe('login-user', () => {
|
|
487
487
|
});
|
488
488
|
it('should be able to login when user only have one user group with level 1 or higher', () => __awaiter(void 0, void 0, void 0, function* () {
|
489
489
|
const sessionService = yield src_1.SessionService.init();
|
490
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
490
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
491
491
|
const result = yield loginUser['getPrivileges']('EZC');
|
492
492
|
expect(getUserGroupFromDBMock).toBeCalledTimes(2);
|
493
493
|
expect(result).toEqual([
|
@@ -508,7 +508,7 @@ describe('login-user', () => {
|
|
508
508
|
const tempUserUserGroups = userUserGroups;
|
509
509
|
userUserGroups.push(userUserGroups[0]);
|
510
510
|
const sessionService = yield src_1.SessionService.init();
|
511
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
511
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
512
512
|
const result = yield loginUser['getPrivileges']('EZC');
|
513
513
|
expect(getUserUserGroupFromDBMock).toBeCalledTimes(1);
|
514
514
|
expect(getUserGroupFromDBMock).toBeCalledTimes(4);
|
@@ -531,7 +531,7 @@ describe('login-user', () => {
|
|
531
531
|
const tempUserUserGroup = userUserGroups;
|
532
532
|
userUserGroups = [];
|
533
533
|
const sessionService = yield src_1.SessionService.init();
|
534
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
534
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
535
535
|
const result = yield loginUser['getPrivileges']('EZC');
|
536
536
|
expect(getUserGroupFromDBMock).toBeCalledTimes(0);
|
537
537
|
expect(result).toEqual(['Terminate Data']);
|
@@ -543,7 +543,7 @@ describe('login-user', () => {
|
|
543
543
|
const tempUser = user;
|
544
544
|
user.SystemPrivileges = [];
|
545
545
|
const sessionService = yield src_1.SessionService.init();
|
546
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
546
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
547
547
|
const result = yield loginUser['getPrivileges']('EZC');
|
548
548
|
expect(getUserGroupFromDBMock).toBeCalledTimes(0);
|
549
549
|
expect(result).toEqual([
|
@@ -562,7 +562,7 @@ describe('login-user', () => {
|
|
562
562
|
const tempUser = user;
|
563
563
|
user.SystemPrivileges = [];
|
564
564
|
const sessionService = yield src_1.SessionService.init();
|
565
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
565
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
566
566
|
const result = yield loginUser['getPrivileges']('EZC');
|
567
567
|
expect(getUserGroupFromDBMock).toBeCalledTimes(0);
|
568
568
|
expect(result).toEqual([
|
@@ -580,7 +580,7 @@ describe('login-user', () => {
|
|
580
580
|
const tempUserUserGroup = userUserGroups;
|
581
581
|
userUserGroups = [];
|
582
582
|
const sessionService = yield src_1.SessionService.init();
|
583
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
583
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
584
584
|
const result = yield loginUser['getPrivileges']('EZC');
|
585
585
|
expect(getUserGroupFromDBMock).toBeCalledTimes(0);
|
586
586
|
expect(result).toEqual([]);
|
@@ -595,27 +595,27 @@ describe('login-user', () => {
|
|
595
595
|
it('should return false if user session not found', () => __awaiter(void 0, void 0, void 0, function* () {
|
596
596
|
isSessionExist = false;
|
597
597
|
const sessionService = yield src_1.SessionService.init();
|
598
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
598
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
599
599
|
const result = yield loginUser.checkPrivileges('EZC', 'Terminate');
|
600
600
|
expect(result).toEqual(false);
|
601
601
|
}));
|
602
602
|
it('should return false if system login not found', () => __awaiter(void 0, void 0, void 0, function* () {
|
603
603
|
isSessionExist = false;
|
604
604
|
const sessionService = yield src_1.SessionService.init();
|
605
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
605
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
606
606
|
const result = yield loginUser.checkPrivileges('EZC', 'Terminate');
|
607
607
|
expect(result).toEqual(false);
|
608
608
|
}));
|
609
609
|
it('should return false if privilege not found', () => __awaiter(void 0, void 0, void 0, function* () {
|
610
610
|
isSessionExist = false;
|
611
611
|
const sessionService = yield src_1.SessionService.init();
|
612
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
612
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
613
613
|
const result = yield loginUser.checkPrivileges('EZC', 'Not Terminate');
|
614
614
|
expect(result).toEqual(false);
|
615
615
|
}));
|
616
616
|
it('should return true if privilege found', () => __awaiter(void 0, void 0, void 0, function* () {
|
617
617
|
const sessionService = yield src_1.SessionService.init();
|
618
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
618
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
619
619
|
const result = yield loginUser.checkPrivileges('EZC', 'Terminate');
|
620
620
|
expect(result).toEqual(true);
|
621
621
|
}));
|
@@ -628,7 +628,7 @@ describe('login-user', () => {
|
|
628
628
|
try {
|
629
629
|
isSessionExist = false;
|
630
630
|
const sessionService = yield src_1.SessionService.init();
|
631
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
631
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
632
632
|
yield loginUser.checkSession('EZC', session.systemLogins[0].sessionId, '755');
|
633
633
|
}
|
634
634
|
catch (error) {
|
@@ -638,7 +638,7 @@ describe('login-user', () => {
|
|
638
638
|
it('it should returns session expired if sessionId not matched', () => __awaiter(void 0, void 0, void 0, function* () {
|
639
639
|
try {
|
640
640
|
const sessionService = yield src_1.SessionService.init();
|
641
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
641
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
642
642
|
yield loginUser.checkSession('NOTEZC', session.systemLogins[0].sessionId, '755');
|
643
643
|
}
|
644
644
|
catch (error) {
|
@@ -654,7 +654,7 @@ describe('login-user', () => {
|
|
654
654
|
}
|
655
655
|
}));
|
656
656
|
const sessionService = yield src_1.SessionService.init();
|
657
|
-
const loginUser = yield login_user_1.LoginUser.init(sessionService,
|
657
|
+
const loginUser = yield login_user_1.LoginUser.init(sessionService, 755);
|
658
658
|
const result = yield loginUser.checkSession('EZC', session.systemLogins[0].sessionId, '755');
|
659
659
|
expect(result).toEqual(session.systemLogins[0]);
|
660
660
|
}));
|