@tomei/sso 0.34.11 → 0.35.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/components/system/system.d.ts +1 -0
- package/dist/src/components/system/system.js +36 -0
- package/dist/src/components/system/system.js.map +1 -1
- package/dist/src/components/system-privilege/system-privilege.d.ts +1 -0
- package/dist/src/components/system-privilege/system-privilege.js +36 -0
- package/dist/src/components/system-privilege/system-privilege.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/components/system/system.ts +68 -1
- package/src/components/system-privilege/system-privilege.ts +80 -1
package/package.json
CHANGED
@@ -2,7 +2,7 @@ import { ClassError, HashTable, ObjectBase } from '@tomei/general';
|
|
2
2
|
import { SystemRepository } from './system.repository';
|
3
3
|
import { ISystemAttr } from '../../interfaces/system.interface';
|
4
4
|
import { LoginUser } from '../login-user/login-user';
|
5
|
-
import { ApplicationConfig } from '@tomei/config';
|
5
|
+
import { ApplicationConfig, ComponentConfig } from '@tomei/config';
|
6
6
|
import { ActionEnum, Activity } from '@tomei/activity-history';
|
7
7
|
import { ISystemSearchAttr } from '../../interfaces/system-search-attr.interface';
|
8
8
|
import { Op } from 'sequelize';
|
@@ -385,4 +385,71 @@ export class System extends ObjectBase {
|
|
385
385
|
throw error;
|
386
386
|
}
|
387
387
|
}
|
388
|
+
|
389
|
+
public static async loadSystem(dbTransaction): Promise<string> {
|
390
|
+
try {
|
391
|
+
// Part 1: Retrieve System Info
|
392
|
+
// Load sso component config.loadComponentConfig Call Config. by passing:
|
393
|
+
// filepath: '/component-config/sso-config.json'
|
394
|
+
ComponentConfig.loadComponentConfig('./component-config/sso-config.json');
|
395
|
+
|
396
|
+
const config: {
|
397
|
+
name: string;
|
398
|
+
code: string;
|
399
|
+
description: string;
|
400
|
+
userId: string;
|
401
|
+
} = ComponentConfig.getComponentConfigValue('@tomei/sso', 'system');
|
402
|
+
|
403
|
+
// Make sure all required fields are provided in the config file.
|
404
|
+
if (
|
405
|
+
!config.name ||
|
406
|
+
!config.code ||
|
407
|
+
!config.description ||
|
408
|
+
!config.userId
|
409
|
+
) {
|
410
|
+
throw new Error('Missing required fields in the config file.');
|
411
|
+
}
|
412
|
+
|
413
|
+
// Retrieve existing System. Call System._Repo findByPk method by passing:
|
414
|
+
// SystemCode: system.code
|
415
|
+
// dbTransaction
|
416
|
+
const system = await System._Repo.findByPk(config.code, {
|
417
|
+
transaction: dbTransaction,
|
418
|
+
});
|
419
|
+
|
420
|
+
// If system already exists, skip all steps below and return "System loaded."
|
421
|
+
if (system) {
|
422
|
+
return 'System loaded.';
|
423
|
+
}
|
424
|
+
|
425
|
+
//if system not exists. Call System._Repo create method by passing:
|
426
|
+
// SystemCode: system.code,
|
427
|
+
// Name: system.name
|
428
|
+
// Description: system.description,
|
429
|
+
// Status: 'Active',
|
430
|
+
// CreatedById: system.userId
|
431
|
+
// CreatedAt: current date & time
|
432
|
+
// UpdatedById: system.userId
|
433
|
+
// UpdatedAt: current date & time
|
434
|
+
await System._Repo.create(
|
435
|
+
{
|
436
|
+
SystemCode: config.code,
|
437
|
+
Name: config.name,
|
438
|
+
Description: config.description,
|
439
|
+
Status: 'Active',
|
440
|
+
CreatedById: config.userId,
|
441
|
+
CreatedAt: new Date(),
|
442
|
+
UpdatedById: config.userId,
|
443
|
+
UpdatedAt: new Date(),
|
444
|
+
},
|
445
|
+
{
|
446
|
+
transaction: dbTransaction,
|
447
|
+
},
|
448
|
+
);
|
449
|
+
// Return "System loaded."
|
450
|
+
return 'System loaded.';
|
451
|
+
} catch (error) {
|
452
|
+
throw error;
|
453
|
+
}
|
454
|
+
}
|
388
455
|
}
|
@@ -3,7 +3,7 @@ import { SystemRepository } from '../system/system.repository';
|
|
3
3
|
import { SystemPrivilegeRepository } from './system-privilege.repository';
|
4
4
|
import { ISystemPrivilegeAttr } from '../../interfaces/system-privilege.interface';
|
5
5
|
import { LoginUser } from '../login-user/login-user';
|
6
|
-
import { ApplicationConfig } from '@tomei/config';
|
6
|
+
import { ApplicationConfig, ComponentConfig } from '@tomei/config';
|
7
7
|
import { System } from '../system/system';
|
8
8
|
import { ActionEnum, Activity } from '@tomei/activity-history';
|
9
9
|
import { ISystemPrivilegeSearch } from '../../interfaces/system-privilege-search.interface';
|
@@ -289,4 +289,83 @@ export class SystemPrivilege extends ObjectBase {
|
|
289
289
|
throw error;
|
290
290
|
}
|
291
291
|
}
|
292
|
+
|
293
|
+
public static async loadAllPrivileges(
|
294
|
+
dbTransaction: any,
|
295
|
+
systemCode: string,
|
296
|
+
): Promise<string> {
|
297
|
+
try {
|
298
|
+
//Instantiate existing System by passing:
|
299
|
+
// dbTransaction
|
300
|
+
// SystemCode: Params.SystemCode
|
301
|
+
await System.init(dbTransaction, systemCode);
|
302
|
+
|
303
|
+
// Part 2: Load Privileges
|
304
|
+
// Load sso component config.loadComponentConfig Call Config. by passing:
|
305
|
+
// filepath: '/component-config/sso-config.json'
|
306
|
+
|
307
|
+
ComponentConfig.loadComponentConfig('./component-config/sso-config.json');
|
308
|
+
|
309
|
+
// Retrieve privileges array by call Config.getComponentConfigValue by passing:
|
310
|
+
// componentName: '@tomei/sso'
|
311
|
+
// configKey: 'privileges'
|
312
|
+
const privilegesConfig: {
|
313
|
+
privilegeCode: string;
|
314
|
+
description: string;
|
315
|
+
}[] = ComponentConfig.getComponentConfigValue('@tomei/sso', 'privileges');
|
316
|
+
// Retrieve system user id. Call Config.getComponentConfigValue by passing:
|
317
|
+
// componentName: '@tomei/sso'
|
318
|
+
// configKey: 'system'
|
319
|
+
const systemConfig: {
|
320
|
+
name: string;
|
321
|
+
code: string;
|
322
|
+
description: string;
|
323
|
+
userId: string;
|
324
|
+
} = ComponentConfig.getComponentConfigValue('@tomei/sso', 'system');
|
325
|
+
|
326
|
+
//Set systemUserId to system.userId.
|
327
|
+
const systemUserId = systemConfig.userId;
|
328
|
+
//Retrieve existing SystemPrivilege. Call SystemPrivilege._Repo findAll method by passing:
|
329
|
+
// where:
|
330
|
+
// SystemCode: Params.SystemCode
|
331
|
+
const existingSystemPrivileges = await this._Repository.findAll({
|
332
|
+
where: {
|
333
|
+
SystemCode: systemCode,
|
334
|
+
},
|
335
|
+
transaction: dbTransaction,
|
336
|
+
});
|
337
|
+
|
338
|
+
//Filter out existing privileges with the privileges array above to identify which privileges to be created and map it tobeCreatePrivileges.
|
339
|
+
const tobeCreatePrivileges = privilegesConfig.filter(
|
340
|
+
(privilegeConfig) =>
|
341
|
+
!existingSystemPrivileges.find(
|
342
|
+
(existingPrivilege) =>
|
343
|
+
existingPrivilege.PrivilegeCode === privilegeConfig.privilegeCode,
|
344
|
+
),
|
345
|
+
);
|
346
|
+
|
347
|
+
//Call SystemPrivilege._Repo create method for each newPrivileges.
|
348
|
+
for (const privilegeConfig of tobeCreatePrivileges) {
|
349
|
+
await this._Repository.create(
|
350
|
+
{
|
351
|
+
PrivilegeCode: privilegeConfig.privilegeCode,
|
352
|
+
SystemCode: systemCode,
|
353
|
+
Description: privilegeConfig.description,
|
354
|
+
Status: 'Active',
|
355
|
+
CreatedById: parseInt(systemUserId),
|
356
|
+
UpdatedById: parseInt(systemUserId),
|
357
|
+
CreatedAt: new Date(),
|
358
|
+
UpdatedAt: new Date(),
|
359
|
+
},
|
360
|
+
{
|
361
|
+
transaction: dbTransaction,
|
362
|
+
},
|
363
|
+
);
|
364
|
+
}
|
365
|
+
|
366
|
+
return 'Privileges Loaded';
|
367
|
+
} catch (error) {
|
368
|
+
throw error;
|
369
|
+
}
|
370
|
+
}
|
292
371
|
}
|