@tomei/sso 0.43.2 → 0.44.0
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 +1164 -1164
- 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 -83
- 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/coverage/clover.xml +1452 -1452
- package/coverage/coverage-final.json +47 -47
- package/coverage/lcov-report/base.css +224 -224
- package/coverage/lcov-report/block-navigation.js +87 -87
- package/coverage/lcov-report/components/group/group.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group/group.ts.html +327 -327
- package/coverage/lcov-report/components/group/index.html +130 -130
- package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group-object-privilege/group-object-privilege.ts.html +321 -321
- package/coverage/lcov-report/components/group-object-privilege/index.html +130 -130
- package/coverage/lcov-report/components/group-privilege/group-privilege.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group-privilege/group-privilege.ts.html +303 -303
- package/coverage/lcov-report/components/group-privilege/index.html +130 -130
- package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group-reporting-user/group-reporting-user.ts.html +327 -327
- package/coverage/lcov-report/components/group-reporting-user/index.html +130 -130
- package/coverage/lcov-report/components/group-system-access/group-system-access.repository.ts.html +117 -117
- package/coverage/lcov-report/components/group-system-access/group-system-access.ts.html +309 -309
- package/coverage/lcov-report/components/group-system-access/index.html +130 -130
- package/coverage/lcov-report/components/login-history/index.html +115 -115
- package/coverage/lcov-report/components/login-history/login-history.repository.ts.html +117 -117
- package/coverage/lcov-report/components/login-user/index.html +130 -130
- package/coverage/lcov-report/components/login-user/login-user.ts.html +5007 -5007
- package/coverage/lcov-report/components/login-user/user.repository.ts.html +117 -117
- package/coverage/lcov-report/components/password-hash/index.html +115 -115
- package/coverage/lcov-report/components/password-hash/password-hash.service.ts.html +126 -126
- package/coverage/lcov-report/components/system/index.html +130 -130
- package/coverage/lcov-report/components/system/system.repository.ts.html +117 -117
- package/coverage/lcov-report/components/system/system.ts.html +909 -909
- package/coverage/lcov-report/components/system-privilege/index.html +130 -130
- package/coverage/lcov-report/components/system-privilege/system-privilege.repository.ts.html +120 -120
- package/coverage/lcov-report/components/system-privilege/system-privilege.ts.html +390 -390
- package/coverage/lcov-report/components/user-group/index.html +130 -130
- package/coverage/lcov-report/components/user-group/user-group.repository.ts.html +117 -117
- package/coverage/lcov-report/components/user-group/user-group.ts.html +354 -354
- package/coverage/lcov-report/components/user-object-privilege/index.html +130 -130
- package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.repository.ts.html +117 -117
- package/coverage/lcov-report/components/user-object-privilege/user-object-privilege.ts.html +312 -312
- package/coverage/lcov-report/components/user-privilege/index.html +130 -130
- package/coverage/lcov-report/components/user-privilege/user-privilege.repository.ts.html +117 -117
- package/coverage/lcov-report/components/user-privilege/user-privilege.ts.html +306 -306
- package/coverage/lcov-report/components/user-system-access/index.html +130 -130
- package/coverage/lcov-report/components/user-system-access/user-system-access.repository.ts.html +117 -117
- package/coverage/lcov-report/components/user-system-access/user-system-access.ts.html +312 -312
- package/coverage/lcov-report/enum/group-type.enum.ts.html +108 -108
- package/coverage/lcov-report/enum/index.html +160 -160
- package/coverage/lcov-report/enum/index.ts.html +93 -93
- package/coverage/lcov-report/enum/user-status.enum.ts.html +105 -105
- package/coverage/lcov-report/enum/yn.enum.ts.html +96 -96
- package/coverage/lcov-report/index.html +370 -370
- package/coverage/lcov-report/models/group-object-privilege.entity.ts.html +333 -333
- package/coverage/lcov-report/models/group-privilege.entity.ts.html +315 -315
- package/coverage/lcov-report/models/group-reporting-user.entity.ts.html +339 -339
- package/coverage/lcov-report/models/group-system-access.entity.ts.html +324 -324
- package/coverage/lcov-report/models/group.entity.ts.html +435 -435
- package/coverage/lcov-report/models/index.html +310 -310
- package/coverage/lcov-report/models/login-history.entity.ts.html +252 -252
- package/coverage/lcov-report/models/staff.entity.ts.html +411 -411
- package/coverage/lcov-report/models/system-privilege.entity.ts.html +354 -354
- package/coverage/lcov-report/models/system.entity.ts.html +423 -423
- package/coverage/lcov-report/models/user-group.entity.ts.html +354 -354
- package/coverage/lcov-report/models/user-object-privilege.entity.ts.html +330 -330
- package/coverage/lcov-report/models/user-privilege.entity.ts.html +315 -315
- package/coverage/lcov-report/models/user-system-access.entity.ts.html +315 -315
- package/coverage/lcov-report/models/user.entity.ts.html +522 -522
- package/coverage/lcov-report/prettify.css +1 -1
- package/coverage/lcov-report/prettify.js +2 -2
- package/coverage/lcov-report/redis-client/index.html +115 -115
- package/coverage/lcov-report/redis-client/redis.service.ts.html +240 -240
- package/coverage/lcov-report/session/index.html +115 -115
- package/coverage/lcov-report/session/session.service.ts.html +246 -246
- package/coverage/lcov-report/sorter.js +196 -196
- package/coverage/lcov.info +2490 -2490
- package/coverage/test-report.xml +128 -128
- package/create-sso-user.sql +39 -39
- package/dist/__tests__/unit/components/group-privilege/group-privilege.test.d.ts +1 -0
- package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js +71 -0
- package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js.map +1 -0
- package/dist/__tests__/unit/components/login-user/login-user.spec.d.ts +0 -0
- package/dist/__tests__/unit/components/login-user/login-user.spec.js +6 -0
- package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +1 -0
- package/dist/src/components/group-reporting-user/group-reporting-user.d.ts +2 -0
- package/dist/src/components/group-reporting-user/group-reporting-user.js +36 -0
- package/dist/src/components/group-reporting-user/group-reporting-user.js.map +1 -1
- package/dist/src/components/group-reporting-user/group-reporting-user.repository.d.ts +1 -0
- package/dist/src/components/group-reporting-user/group-reporting-user.repository.js +19 -0
- package/dist/src/components/group-reporting-user/group-reporting-user.repository.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/jest.config.js +14 -14
- package/migrations/20240314080602-create-user-table.js +124 -124
- 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 -53
- package/migrations/20240527064925-create-system-table.js +78 -78
- package/migrations/20240527064926-create-system-privilege-table.js +71 -71
- package/migrations/20240527065342-create-group-table.js +93 -93
- 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 +75 -75
- package/migrations/20240528032229-user-privilege-table.js +75 -75
- package/migrations/20240528063003-create-group-privilege-table.js +85 -85
- package/migrations/20240528063051-create-group-object-privilege-table.js +84 -84
- package/migrations/20240528063107-create-user-object-privilege-table.js +83 -83
- package/migrations/20240528063108-create-api-key-table.js +78 -78
- package/package.json +89 -89
- package/sampledotenv +7 -7
- package/sonar-project.properties +22 -22
- package/src/components/group-reporting-user/group-reporting-user.repository.ts +12 -0
- package/src/components/group-reporting-user/group-reporting-user.ts +78 -0
- package/tsconfig.build.json +5 -5
- package/tsconfig.json +22 -22
package/sampledotenv
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
DATABASE_URL=
|
|
2
|
-
SHADOW_DATABASE_URL=
|
|
3
|
-
REDIS_URL=
|
|
4
|
-
REDIS_PASSWORD=
|
|
5
|
-
SMTP_HOST=
|
|
6
|
-
SMTP_PORT=
|
|
7
|
-
EMAIL_SENDER=
|
|
1
|
+
DATABASE_URL=
|
|
2
|
+
SHADOW_DATABASE_URL=
|
|
3
|
+
REDIS_URL=
|
|
4
|
+
REDIS_PASSWORD=
|
|
5
|
+
SMTP_HOST=
|
|
6
|
+
SMTP_PORT=
|
|
7
|
+
EMAIL_SENDER=
|
|
8
8
|
EMAIL_PASSWORD=
|
package/sonar-project.properties
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
sonar.projectKey=all-tomei-projects_sso
|
|
2
|
-
sonar.organization=all-tomei-projects
|
|
3
|
-
sonar.exclusions=**/*.js,test-data,dist,coverage, node_modules, __tests__, **/*.spec.ts, __mocks__
|
|
4
|
-
sonar.scm.provider=git
|
|
5
|
-
|
|
6
|
-
sonar.sources=src
|
|
7
|
-
sonar.test=__tests__
|
|
8
|
-
sonar.test.inclusions=src/**/*.spec.ts
|
|
9
|
-
|
|
10
|
-
sonar.javascript.lcov.reportPaths=./coverage/lcov.info
|
|
11
|
-
sonar.testExecutionReportPaths=coverage/test-report.xml
|
|
12
|
-
sonar.sourceEnconding=UTF-8
|
|
13
|
-
|
|
14
|
-
# This is the name and version displayed in the SonarCloud UI.
|
|
15
|
-
#sonar.projectName=sso
|
|
16
|
-
#sonar.projectVersion=1.0
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
|
|
20
|
-
#sonar.sources=.
|
|
21
|
-
|
|
22
|
-
# Encoding of the source code. Default is default system encoding
|
|
1
|
+
sonar.projectKey=all-tomei-projects_sso
|
|
2
|
+
sonar.organization=all-tomei-projects
|
|
3
|
+
sonar.exclusions=**/*.js,test-data,dist,coverage, node_modules, __tests__, **/*.spec.ts, __mocks__
|
|
4
|
+
sonar.scm.provider=git
|
|
5
|
+
|
|
6
|
+
sonar.sources=src
|
|
7
|
+
sonar.test=__tests__
|
|
8
|
+
sonar.test.inclusions=src/**/*.spec.ts
|
|
9
|
+
|
|
10
|
+
sonar.javascript.lcov.reportPaths=./coverage/lcov.info
|
|
11
|
+
sonar.testExecutionReportPaths=coverage/test-report.xml
|
|
12
|
+
sonar.sourceEnconding=UTF-8
|
|
13
|
+
|
|
14
|
+
# This is the name and version displayed in the SonarCloud UI.
|
|
15
|
+
#sonar.projectName=sso
|
|
16
|
+
#sonar.projectVersion=1.0
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
|
|
20
|
+
#sonar.sources=.
|
|
21
|
+
|
|
22
|
+
# Encoding of the source code. Default is default system encoding
|
|
23
23
|
#sonar.sourceEncoding=UTF-8
|
|
@@ -8,4 +8,16 @@ export class GroupReportingUserRepository
|
|
|
8
8
|
constructor() {
|
|
9
9
|
super(GroupReportingUserModel);
|
|
10
10
|
}
|
|
11
|
+
|
|
12
|
+
async destroy(
|
|
13
|
+
groupReportingUserId: number,
|
|
14
|
+
dbTransaction: any,
|
|
15
|
+
): Promise<void> {
|
|
16
|
+
await GroupReportingUserModel.destroy({
|
|
17
|
+
where: {
|
|
18
|
+
GroupReportingUserId: groupReportingUserId,
|
|
19
|
+
},
|
|
20
|
+
transaction: dbTransaction,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
11
23
|
}
|
|
@@ -5,6 +5,7 @@ import { User } from '../login-user/user';
|
|
|
5
5
|
import { Group } from '../group/group';
|
|
6
6
|
import { ApplicationConfig } from '@tomei/config';
|
|
7
7
|
import { ActionEnum, Activity } from '@tomei/activity-history';
|
|
8
|
+
import { Transaction } from 'sequelize';
|
|
8
9
|
|
|
9
10
|
export class GroupReportingUser extends ObjectBase {
|
|
10
11
|
ObjectId: string;
|
|
@@ -280,4 +281,81 @@ export class GroupReportingUser extends ObjectBase {
|
|
|
280
281
|
throw error;
|
|
281
282
|
}
|
|
282
283
|
}
|
|
284
|
+
|
|
285
|
+
public static async removeGroupReportingUser(
|
|
286
|
+
loginUser: User, //The user performing the operation, used for privilege checking and logging.
|
|
287
|
+
dbTransaction: Transaction, // The database transaction object to ensure the operation's atomicity.
|
|
288
|
+
groupReportingUserId: number, //The ID of the GroupReportingUser to be removed.
|
|
289
|
+
): Promise<void> {
|
|
290
|
+
// This method removes a GroupReportingUser record from the database.
|
|
291
|
+
try {
|
|
292
|
+
// Part 1: Privilege Checking
|
|
293
|
+
// Call loginUser.checkPrivileges() method by passing:
|
|
294
|
+
// SystemCode: Retrieve from app config.
|
|
295
|
+
// PrivilegeCode: "GROUP_REPORTING_USER_REMOVE".
|
|
296
|
+
const systemCode =
|
|
297
|
+
ApplicationConfig.getComponentConfigValue('system-code');
|
|
298
|
+
const isPrivileged = await loginUser.checkPrivileges(
|
|
299
|
+
systemCode,
|
|
300
|
+
'GROUP_REPORTING_USER_REMOVE',
|
|
301
|
+
);
|
|
302
|
+
if (!isPrivileged) {
|
|
303
|
+
throw new ClassError(
|
|
304
|
+
'GroupReportingUser',
|
|
305
|
+
'GroupReportingUserErrMsg06',
|
|
306
|
+
'Insufficient privileges to remove a user from the group',
|
|
307
|
+
);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Part 2: Find User
|
|
311
|
+
// Call GroupReportingUser.init(dbTransaction, groupReportingUserId) to check if the user exists.
|
|
312
|
+
const groupReportingUser = await GroupReportingUser.init(
|
|
313
|
+
dbTransaction,
|
|
314
|
+
groupReportingUserId.toString(),
|
|
315
|
+
);
|
|
316
|
+
|
|
317
|
+
// Part 3: Remove User
|
|
318
|
+
// Call GroupReportingUser._Repo.destroy({ where: { GroupReportingUserId: groupReportingUserId }, transaction: dbTransaction }) to remove the user from the database.
|
|
319
|
+
await GroupReportingUser._Repo.destroy(
|
|
320
|
+
groupReportingUserId,
|
|
321
|
+
dbTransaction,
|
|
322
|
+
);
|
|
323
|
+
|
|
324
|
+
// Part 4: Record Create Activity
|
|
325
|
+
// Initialise EntityValueBefore variable and set it to the GroupReportingUser instance before destruction.
|
|
326
|
+
const entityValueBefore = {
|
|
327
|
+
GroupReportingUserId: groupReportingUser.GroupReportingUserId,
|
|
328
|
+
GroupCode: groupReportingUser.GroupCode,
|
|
329
|
+
UserId: groupReportingUser.UserId,
|
|
330
|
+
Rank: groupReportingUser.Rank,
|
|
331
|
+
Status: groupReportingUser.Status,
|
|
332
|
+
CreatedById: groupReportingUser.CreatedById,
|
|
333
|
+
CreatedAt: groupReportingUser.CreatedAt,
|
|
334
|
+
UpdatedById: groupReportingUser.UpdatedById,
|
|
335
|
+
UpdatedAt: groupReportingUser.UpdatedAt,
|
|
336
|
+
};
|
|
337
|
+
// Instantiate a new activity from the Activity class, and set:
|
|
338
|
+
const activity = new Activity();
|
|
339
|
+
// ActivityId: activity.createId()
|
|
340
|
+
// Action: ActionEnum.Delete
|
|
341
|
+
// Description: Remove Group Reporting User
|
|
342
|
+
// EntityType: GroupReportingUser
|
|
343
|
+
// EntityId: groupReportingUserId
|
|
344
|
+
// EntityValueBefore: Stringified representation of the GroupReportingUser instance before destroy
|
|
345
|
+
// EntityValueAfter: Stringified empty object ({})
|
|
346
|
+
activity.ActivityId = activity.createId();
|
|
347
|
+
activity.Action = ActionEnum.DELETE;
|
|
348
|
+
activity.Description = 'Remove Group Reporting User';
|
|
349
|
+
activity.EntityType = 'GroupReportingUser';
|
|
350
|
+
activity.EntityId = groupReportingUserId.toString();
|
|
351
|
+
activity.EntityValueBefore = JSON.stringify(entityValueBefore);
|
|
352
|
+
activity.EntityValueAfter = JSON.stringify({});
|
|
353
|
+
// Call the activity.create() method by passing:
|
|
354
|
+
// dbTransaction
|
|
355
|
+
// userId: loginUser.UserId
|
|
356
|
+
await activity.create(loginUser.ObjectId, dbTransaction);
|
|
357
|
+
} catch (error) {
|
|
358
|
+
throw error;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
283
361
|
}
|
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
|
}
|