@solidstarters/solid-core 1.2.176 → 1.2.178
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/controllers/authentication.controller.d.ts.map +1 -1
- package/dist/controllers/authentication.controller.js +1 -0
- package/dist/controllers/authentication.controller.js.map +1 -1
- package/dist/controllers/setting.controller.d.ts +2 -2
- package/dist/controllers/setting.controller.d.ts.map +1 -1
- package/dist/controllers/setting.controller.js +5 -3
- package/dist/controllers/setting.controller.js.map +1 -1
- package/dist/dtos/create-chatter-message.dto.js +1 -1
- package/dist/dtos/create-chatter-message.dto.js.map +1 -1
- package/dist/entities/chatter-message.entity.js +1 -1
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +13 -1
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +1 -1
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +29 -6
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +2 -1
- package/dist/solid-core.module.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/controllers/authentication.controller.ts +1 -0
- package/src/controllers/setting.controller.ts +6 -5
- package/src/dtos/create-chatter-message.dto.ts +1 -1
- package/src/entities/chatter-message.entity.ts +1 -1
- package/src/seeders/module-metadata-seeder.service.ts +29 -3
- package/src/seeders/seed-data/solid-core-metadata.json +1 -1
- package/src/services/chatter-message.service.ts +32 -5
- package/src/solid-core.module.ts +2 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidstarters/solid-core",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.178",
|
|
4
4
|
"description": "This module is a NestJS module containing all the required core providers required by a Solid application",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BadRequestException, Body, Controller, Delete, Get, Param, Patch, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';
|
|
2
2
|
import { AnyFilesInterceptor } from "@nestjs/platform-express";
|
|
3
3
|
import { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';
|
|
4
|
-
import {
|
|
5
|
-
import { CreateSettingDto } from '../dtos/create-setting.dto';
|
|
6
|
-
import { UpdateSettingDto } from '../dtos/update-setting.dto';
|
|
4
|
+
import { Public } from 'src/decorators/public.decorator';
|
|
7
5
|
import { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';
|
|
8
6
|
import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
|
|
9
|
-
import {
|
|
7
|
+
import { CreateSettingDto } from '../dtos/create-setting.dto';
|
|
8
|
+
import { UpdateSettingDto } from '../dtos/update-setting.dto';
|
|
9
|
+
import { SettingService } from '../services/setting.service';
|
|
10
10
|
|
|
11
11
|
@ApiTags('Solid Core')
|
|
12
12
|
@Controller('setting') //FIXME: Change this to the model plural name
|
|
@@ -44,6 +44,7 @@ export class SettingController {
|
|
|
44
44
|
|
|
45
45
|
@ApiBearerAuth("jwt")
|
|
46
46
|
@Get('/wrapped')
|
|
47
|
+
@Public()
|
|
47
48
|
async wrapSettings() {
|
|
48
49
|
return this.service.wrapSettings();
|
|
49
50
|
}
|
|
@@ -10,7 +10,7 @@ export class ChatterMessage extends CommonEntity {
|
|
|
10
10
|
messageType: string; // audit | custom
|
|
11
11
|
@Column({ type: "varchar" })
|
|
12
12
|
messageSubType: string; // audit_update | audit_insert | audit_delete | custom
|
|
13
|
-
@Column({ type: "text" })
|
|
13
|
+
@Column({ type: "text", nullable: true })
|
|
14
14
|
messageBody: string;
|
|
15
15
|
@Index()
|
|
16
16
|
@Column({ type: "integer" })
|
|
@@ -241,21 +241,27 @@ export class ModuleMetadataSeederService {
|
|
|
241
241
|
// 1. Give all permissions to the Admin role.
|
|
242
242
|
this.logger.log(`About to add all permissions to the Admin role`);
|
|
243
243
|
await this.roleService.addAllPermissionsToRole("Admin");
|
|
244
|
-
// 2. Give
|
|
244
|
+
// 2. Give permissions to the Internal / Public role.
|
|
245
245
|
const internalRolePermission = [
|
|
246
|
-
|
|
246
|
+
// User permissions
|
|
247
|
+
'UserController.findMany', //Why do we need this?
|
|
247
248
|
'UserController.checkIfPermissionExists',
|
|
248
249
|
'UserController.findOne',
|
|
250
|
+
// Menu permissions
|
|
249
251
|
'MenuItemMetadataController.findMany',
|
|
250
252
|
'MenuItemMetadataController.findUserMenus',
|
|
251
253
|
'MenuItemMetadataController.findOne',
|
|
254
|
+
// View metadata permissions
|
|
252
255
|
'ViewMetadataController.getLayout',
|
|
253
256
|
'ViewMetadataController.findMany',
|
|
254
257
|
'ViewMetadataController.findOne',
|
|
258
|
+
// IAM permissions
|
|
255
259
|
'AuthenticationController.changePassword',
|
|
260
|
+
// Field Metadata permissions
|
|
256
261
|
'FieldMetadataController.getSelectionDynamicValues',
|
|
257
262
|
'FieldMetadataController.getSelectionDynamicValue',
|
|
258
263
|
'FieldMetadataController.findFieldDefaultMetaData',
|
|
264
|
+
// Saved Filters permissions
|
|
259
265
|
'SavedFiltersController.delete',
|
|
260
266
|
'SavedFiltersController.deleteMany',
|
|
261
267
|
'SavedFiltersController.findOne',
|
|
@@ -266,7 +272,27 @@ export class ModuleMetadataSeederService {
|
|
|
266
272
|
'SavedFiltersController.update',
|
|
267
273
|
'SavedFiltersController.insertMany',
|
|
268
274
|
'SavedFiltersController.create',
|
|
269
|
-
|
|
275
|
+
// Logout permissions
|
|
276
|
+
'AuthenticationController.logout',
|
|
277
|
+
// Other permissions can be added here as required.
|
|
278
|
+
// Chatter permissions
|
|
279
|
+
'ChatterMessageController.create',
|
|
280
|
+
'ChatterMessageController.getChatterMessages',
|
|
281
|
+
// 'ChatterMessageController.postMessage', // Does not seem to be used from ui
|
|
282
|
+
// Import
|
|
283
|
+
'ImportTransactionController.getImportTemplate',
|
|
284
|
+
'ImportTransactionController.getImportInstructions',
|
|
285
|
+
'ImportTransactionController.getImportMappingInfo',
|
|
286
|
+
'ImportTransactionController.startImportSync',
|
|
287
|
+
'ImportTransactionController.startImportAsync',
|
|
288
|
+
'ImportTransactionController.exportFailedImportedImports',
|
|
289
|
+
// Export permissions
|
|
290
|
+
'ExportTemplateController.startExportSync',
|
|
291
|
+
'ExportTemplateController.startExportAsync',
|
|
292
|
+
// List of values
|
|
293
|
+
'ListOfValuesController.findMany',
|
|
294
|
+
'ListOfValuesController.findOne',
|
|
295
|
+
// Media // [Not required], since media is always populated as part of a model
|
|
270
296
|
]
|
|
271
297
|
await this.roleService.addPermissionToRole('Internal User', internalRolePermission);
|
|
272
298
|
await this.roleService.addPermissionToRole('Public', ['SettingController.wrapSettings', 'AuthenticationController.logout']);
|
|
@@ -148,7 +148,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
148
148
|
messageDetail.oldValue = null;
|
|
149
149
|
messageDetail.oldValueDisplay = null;
|
|
150
150
|
messageDetail.newValue = this.formatFieldValue(field, fieldValue);
|
|
151
|
-
messageDetail.newValueDisplay = this.formatFieldValueDisplay(field, fieldValue);
|
|
151
|
+
messageDetail.newValueDisplay = await this.formatFieldValueDisplay(field, fieldValue);
|
|
152
152
|
await this.chatterMessageDetailsRepo.save(messageDetail);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
@@ -263,8 +263,8 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
263
263
|
messageDetail.fieldDisplayName = field.displayName;
|
|
264
264
|
messageDetail.oldValue = this.formatFieldValue(field, oldValue);
|
|
265
265
|
messageDetail.newValue = this.formatFieldValue(field, newValue);
|
|
266
|
-
messageDetail.oldValueDisplay = this.formatFieldValueDisplay(field, oldValue);
|
|
267
|
-
messageDetail.newValueDisplay = this.formatFieldValueDisplay(field, newValue);
|
|
266
|
+
messageDetail.oldValueDisplay = await this.formatFieldValueDisplay(field, oldValue);
|
|
267
|
+
messageDetail.newValueDisplay = await this.formatFieldValueDisplay(field, newValue);
|
|
268
268
|
await this.chatterMessageDetailsRepo.save(messageDetail);
|
|
269
269
|
}
|
|
270
270
|
}
|
|
@@ -328,7 +328,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
328
328
|
return value.toString();
|
|
329
329
|
}
|
|
330
330
|
|
|
331
|
-
private formatFieldValueDisplay(field: any, value: any): string {
|
|
331
|
+
private async formatFieldValueDisplay(field: any, value: any): Promise<string> {
|
|
332
332
|
if (value === null || value === undefined) {
|
|
333
333
|
return '';
|
|
334
334
|
}
|
|
@@ -339,8 +339,30 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
339
339
|
|
|
340
340
|
if (field.type === 'relation') {
|
|
341
341
|
if (field.relationType === "many-to-one") {
|
|
342
|
+
if (value.name) {
|
|
342
343
|
return value.name;
|
|
343
344
|
}
|
|
345
|
+
|
|
346
|
+
try {
|
|
347
|
+
const relatedModel = await this.modelMetadataRepo.findOne({
|
|
348
|
+
where: { singularName: field.relationCoModelSingularName || field.relation },
|
|
349
|
+
relations: { userKeyField: true }
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
if (relatedModel && relatedModel.userKeyField) {
|
|
353
|
+
const userKeyFieldName = relatedModel.userKeyField.name;
|
|
354
|
+
return value[userKeyFieldName] ? value[userKeyFieldName].toString() : '';
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
if (value.id) {
|
|
358
|
+
return value.id.toString();
|
|
359
|
+
}
|
|
360
|
+
} catch (error) {
|
|
361
|
+
console.error('Error fetching related model metadata:', error);
|
|
362
|
+
return value.id ? value.id.toString() : '';
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
344
366
|
if (field.relationType === 'many-to-many') {
|
|
345
367
|
return value.map(item => item.name).join(', ');
|
|
346
368
|
}
|
|
@@ -492,7 +514,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
492
514
|
entityName: string,
|
|
493
515
|
query: any
|
|
494
516
|
) {
|
|
495
|
-
const { limit = 25, offset = 0, sort, populate = [] } = query;
|
|
517
|
+
const { limit = 25, offset = 0, sort, populate = [], populateMedia = [] } = query;
|
|
496
518
|
|
|
497
519
|
const model = await this.modelMetadataRepo.findOne({
|
|
498
520
|
where: {
|
|
@@ -571,6 +593,11 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
571
593
|
|
|
572
594
|
const [entities, count] = await qb.getManyAndCount();
|
|
573
595
|
|
|
596
|
+
if (populateMedia && populateMedia.length > 0) {
|
|
597
|
+
const normalizedPopulateMedia = this.crudHelperService.normalize(populateMedia);
|
|
598
|
+
await this['handlePopulateMedia'](normalizedPopulateMedia, entities);
|
|
599
|
+
}
|
|
600
|
+
|
|
574
601
|
const currentPage = Math.floor(offset / limit) + 1;
|
|
575
602
|
const totalPages = Math.ceil(count / limit);
|
|
576
603
|
const nextPage = currentPage < totalPages ? currentPage + 1 : null;
|
package/src/solid-core.module.ts
CHANGED
|
@@ -693,7 +693,8 @@ import { ViewMetadataSubsciber } from './subscribers/view-metadata.subscriber';
|
|
|
693
693
|
ChatterMessageService,
|
|
694
694
|
ChatterMessageRepository,
|
|
695
695
|
ChatterMessageDetailsService,
|
|
696
|
-
ChatterMessageDetailsRepository
|
|
696
|
+
ChatterMessageDetailsRepository,
|
|
697
|
+
TypeOrmModule
|
|
697
698
|
// ThrottlerModule,
|
|
698
699
|
],
|
|
699
700
|
})
|