@solidxai/core 0.1.9-beta.8 → 0.1.10-alpha.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/LICENSE +89 -0
- package/README.md +3 -1
- package/dist/commands/run-tests.command.d.ts +2 -0
- package/dist/commands/run-tests.command.d.ts.map +1 -1
- package/dist/commands/run-tests.command.js +49 -17
- package/dist/commands/run-tests.command.js.map +1 -1
- package/dist/controllers/action-metadata.controller.js +1 -1
- package/dist/controllers/action-metadata.controller.js.map +1 -1
- package/dist/controllers/facebook-authentication.controller.js +1 -1
- package/dist/controllers/facebook-authentication.controller.js.map +1 -1
- package/dist/controllers/google-authentication.controller.js +1 -1
- package/dist/controllers/google-authentication.controller.js.map +1 -1
- package/dist/controllers/menu-item-metadata.controller.js +1 -1
- package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
- package/dist/controllers/microsoft-authentication.controller.js +1 -1
- package/dist/controllers/microsoft-authentication.controller.js.map +1 -1
- package/dist/controllers/mq-message-queue.controller.js +1 -1
- package/dist/controllers/mq-message-queue.controller.js.map +1 -1
- package/dist/controllers/mq-message.controller.js +1 -1
- package/dist/controllers/mq-message.controller.js.map +1 -1
- package/dist/controllers/user.controller.d.ts.map +1 -1
- package/dist/controllers/user.controller.js.map +1 -1
- package/dist/controllers/view-metadata.controller.js +1 -1
- package/dist/controllers/view-metadata.controller.js.map +1 -1
- package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
- package/dist/helpers/bootstrap.helper.js +2 -0
- package/dist/helpers/bootstrap.helper.js.map +1 -1
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
- package/dist/passport-strategies/facebook-oauth.strategy.d.ts +5 -3
- package/dist/passport-strategies/facebook-oauth.strategy.d.ts.map +1 -1
- package/dist/passport-strategies/facebook-oauth.strategy.js +41 -18
- package/dist/passport-strategies/facebook-oauth.strategy.js.map +1 -1
- package/dist/repository/security-rule.repository.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +14 -3
- package/dist/services/authentication.service.d.ts +12 -13
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +42 -18
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/csv.service.js.map +1 -1
- package/dist/services/dashboard.service.js.map +1 -1
- package/dist/services/database/database-bootstrap.service.js.map +1 -1
- package/dist/services/excel.service.js.map +1 -1
- package/dist/services/export-transaction.service.js.map +1 -1
- package/dist/services/field-metadata.service.js +2 -2
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/fixtures.service.js.map +1 -1
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +3 -13
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/queues/database-publisher.service.js +3 -3
- package/dist/services/queues/database-publisher.service.js.map +1 -1
- package/dist/services/queues/database-subscriber.service.js +3 -3
- package/dist/services/queues/database-subscriber.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-publisher.service.js +3 -3
- package/dist/services/queues/rabbitmq-publisher.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js +4 -4
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
- package/dist/services/queues/redis-publisher.service.d.ts.map +1 -1
- package/dist/services/queues/redis-publisher.service.js +4 -1
- package/dist/services/queues/redis-publisher.service.js.map +1 -1
- package/dist/services/queues/redis-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/redis-subscriber.service.js +4 -1
- package/dist/services/queues/redis-subscriber.service.js.map +1 -1
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +74 -8
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +96 -16
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/services/sms/TwilioSMSService.js.map +1 -1
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/user-activity-history.service.js.map +1 -1
- package/dist/services/user.service.d.ts +10 -8
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +85 -46
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +17 -2
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core.module.d.ts +1 -0
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +1 -0
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/subscribers/security-rule.subscriber.d.ts.map +1 -1
- package/dist/subscribers/security-rule.subscriber.js.map +1 -1
- package/dist/subscribers/view-metadata.subscriber.js.map +1 -1
- package/dist/testing/core/testing-engine.js.map +1 -1
- package/dist/testing/reporter/webhook-reporter.d.ts +54 -0
- package/dist/testing/reporter/webhook-reporter.d.ts.map +1 -0
- package/dist/testing/reporter/webhook-reporter.js +74 -0
- package/dist/testing/reporter/webhook-reporter.js.map +1 -0
- package/package.json +6 -2
- package/src/commands/run-tests.command.ts +45 -17
- package/src/controllers/action-metadata.controller.ts +1 -1
- package/src/controllers/facebook-authentication.controller.ts +1 -1
- package/src/controllers/google-authentication.controller.ts +1 -1
- package/src/controllers/menu-item-metadata.controller.ts +1 -1
- package/src/controllers/microsoft-authentication.controller.ts +1 -1
- package/src/controllers/mq-message-queue.controller.ts +1 -1
- package/src/controllers/mq-message.controller.ts +1 -1
- package/src/controllers/user.controller.ts +16 -16
- package/src/controllers/view-metadata.controller.ts +1 -1
- package/src/helpers/bootstrap.helper.ts +3 -0
- package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +1 -1
- package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +1 -1
- package/src/helpers/module-metadata-helper.service.ts +1 -1
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -1
- package/src/passport-strategies/facebook-oauth.strategy.ts +82 -31
- package/src/repository/security-rule.repository.ts +1 -1
- package/src/seeders/module-metadata-seeder.service.ts +4 -4
- package/src/seeders/permission-metadata-seeder.service.ts +1 -1
- package/src/seeders/seed-data/solid-core-metadata.json +14 -3
- package/src/services/authentication.service.ts +215 -151
- package/src/services/chatter-message.service.ts +1 -1
- package/src/services/crud.service.ts +3 -3
- package/src/services/csv.service.ts +1 -1
- package/src/services/dashboard.service.ts +1 -1
- package/src/services/database/database-bootstrap.service.ts +1 -1
- package/src/services/excel.service.ts +1 -1
- package/src/services/export-transaction.service.ts +2 -2
- package/src/services/field-metadata.service.ts +3 -3
- package/src/services/fixtures.service.ts +2 -2
- package/src/services/import-transaction.service.ts +2 -2
- package/src/services/list-of-values.service.ts +1 -1
- package/src/services/model-metadata.service.ts +22 -21
- package/src/services/module-metadata.service.ts +7 -7
- package/src/services/queues/database-publisher.service.ts +4 -4
- package/src/services/queues/database-subscriber.service.ts +7 -7
- package/src/services/queues/rabbitmq-publisher.service.ts +7 -7
- package/src/services/queues/rabbitmq-subscriber.service.ts +13 -13
- package/src/services/queues/redis-publisher.service.ts +7 -4
- package/src/services/queues/redis-subscriber.service.ts +9 -6
- package/src/services/role-metadata.service.ts +1 -1
- package/src/services/scheduled-jobs/scheduler.service.ts +5 -5
- package/src/services/settings/default-settings-provider.service.ts +101 -21
- package/src/services/sms/TwilioSMSService.ts +2 -2
- package/src/services/solid-introspect.service.ts +2 -2
- package/src/services/user-activity-history.service.ts +1 -1
- package/src/services/user.service.ts +149 -77
- package/src/services/view-metadata.service.ts +25 -8
- package/src/solid-core.module.ts +1 -0
- package/src/subscribers/computed-entity-field.subscriber.ts +1 -1
- package/src/subscribers/security-rule.subscriber.ts +8 -8
- package/src/subscribers/view-metadata.subscriber.ts +1 -1
- package/src/testing/core/testing-engine.ts +2 -2
- package/src/testing/reporter/webhook-reporter.ts +116 -0
- package/dev-grooming-docs/ozzy-prompts.txt +0 -70
|
@@ -20,37 +20,37 @@ export class UserController {
|
|
|
20
20
|
@ApiBearerAuth("jwt")
|
|
21
21
|
@Post()
|
|
22
22
|
@UseInterceptors(AnyFilesInterceptor())
|
|
23
|
-
create(@Body() createDto: CreateUserDto, @UploadedFiles() files: Array<Express.Multer.File
|
|
24
|
-
return this.service.create(createDto, files,solidRequestContext);
|
|
23
|
+
create(@Body() createDto: CreateUserDto, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
|
|
24
|
+
return this.service.create(createDto, files, solidRequestContext);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
@ApiBearerAuth("jwt")
|
|
28
28
|
@Post('/bulk')
|
|
29
29
|
@UseInterceptors(AnyFilesInterceptor())
|
|
30
|
-
insertMany(@Body() createDtos: CreateUserDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []
|
|
31
|
-
return this.service.insertMany(createDtos, filesArray,solidRequestContext);
|
|
30
|
+
insertMany(@Body() createDtos: CreateUserDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = [], @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
|
|
31
|
+
return this.service.insertMany(createDtos, filesArray, solidRequestContext);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
@ApiBearerAuth("jwt")
|
|
36
36
|
@Put(':id')
|
|
37
37
|
@UseInterceptors(AnyFilesInterceptor())
|
|
38
|
-
update(@Param('id') id: number, @Body() updateDto: UpdateUserDto, @UploadedFiles() files: Array<Express.Multer.File
|
|
39
|
-
return this.service.update(id, updateDto, files,false,solidRequestContext);
|
|
38
|
+
update(@Param('id') id: number, @Body() updateDto: UpdateUserDto, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
|
|
39
|
+
return this.service.update(id, updateDto, files, false, solidRequestContext);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
@ApiBearerAuth("jwt")
|
|
44
44
|
@Patch(':id/update-user-and-roles')
|
|
45
|
-
updateUser(@Param('id') id: number
|
|
46
|
-
return this.service.updateUser(id, updateDto, files,solidRequestContext);
|
|
45
|
+
updateUser(@Param('id') id: number, @Body() updateDto: any, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
|
|
46
|
+
return this.service.updateUser(id, updateDto, files, solidRequestContext);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
@ApiBearerAuth("jwt")
|
|
51
51
|
@Patch(':id')
|
|
52
52
|
@UseInterceptors(AnyFilesInterceptor())
|
|
53
|
-
partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateUserDto, @UploadedFiles() files: Array<Express.Multer.File
|
|
53
|
+
partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateUserDto, @UploadedFiles() files: Array<Express.Multer.File>, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
|
|
54
54
|
return this.service.update(id, updateDto, files, true, solidRequestContext);
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -67,8 +67,8 @@ export class UserController {
|
|
|
67
67
|
@ApiQuery({ name: 'populateMedia', required: false, type: Array })
|
|
68
68
|
@ApiQuery({ name: 'filters', required: false, type: Array })
|
|
69
69
|
@Get()
|
|
70
|
-
async findMany(@Query() query: any, @SolidRequestContextDecorator() solidRequestContext:SolidRequestContextDto) {
|
|
71
|
-
return this.service.find(query,solidRequestContext);
|
|
70
|
+
async findMany(@Query() query: any, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
|
|
71
|
+
return this.service.find(query, solidRequestContext);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
@ApiBearerAuth("jwt")
|
|
@@ -81,18 +81,18 @@ export class UserController {
|
|
|
81
81
|
|
|
82
82
|
@ApiBearerAuth("jwt")
|
|
83
83
|
@Get(':id')
|
|
84
|
-
async findOne(@Param('id') id: string, @Query() query: any
|
|
85
|
-
return this.service.findOne(+id, query,solidRequestContext);
|
|
84
|
+
async findOne(@Param('id') id: string, @Query() query: any, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
|
|
85
|
+
return this.service.findOne(+id, query, solidRequestContext);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
@Delete('/bulk')
|
|
89
|
-
async deleteMany(@Body() ids: number[]
|
|
90
|
-
return this.service.deleteMany(ids,solidRequestContext);
|
|
89
|
+
async deleteMany(@Body() ids: number[], @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
|
|
90
|
+
return this.service.deleteMany(ids, solidRequestContext);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
@ApiBearerAuth("jwt")
|
|
94
94
|
@Delete(':id')
|
|
95
|
-
async delete(@Param('id') id: number
|
|
95
|
+
async delete(@Param('id') id: number, @SolidRequestContextDecorator() solidRequestContext: SolidRequestContextDto) {
|
|
96
96
|
return this.service.delete(id, solidRequestContext);
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -9,7 +9,7 @@ import { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';
|
|
|
9
9
|
import { ActiveUser } from 'src/decorators/active-user.decorator';
|
|
10
10
|
import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
|
|
11
11
|
|
|
12
|
-
@ApiTags('
|
|
12
|
+
@ApiTags('Solid Core')
|
|
13
13
|
@Controller('view-metadata') //FIXME: Change this to the model plural name
|
|
14
14
|
export class ViewMetadataController {
|
|
15
15
|
constructor(private readonly service: ViewMetadataService) { }
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ValidationPipe } from '@nestjs/common';
|
|
2
2
|
import { NestFactory } from '@nestjs/core';
|
|
3
|
+
import { WsAdapter } from '@nestjs/platform-ws';
|
|
3
4
|
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
|
|
4
5
|
import { NextFunction, Request, Response } from 'express';
|
|
5
6
|
import helmet from 'helmet';
|
|
@@ -178,6 +179,8 @@ export async function bootstrapSolidApp(
|
|
|
178
179
|
const types = require('pg').types;
|
|
179
180
|
types.setTypeParser(types.builtins.INT8, (val: string) => parseInt(val));
|
|
180
181
|
|
|
182
|
+
app.useWebSocketAdapter(new WsAdapter(app));
|
|
183
|
+
|
|
181
184
|
await app.listen(port);
|
|
182
185
|
}
|
|
183
186
|
|
|
@@ -20,7 +20,7 @@ export class BigIntFieldCrudManager implements FieldCrudManager {
|
|
|
20
20
|
if (typeof fieldValue === 'string' || typeof fieldValue === 'number') {
|
|
21
21
|
fieldValue = BigInt(fieldValue);
|
|
22
22
|
}
|
|
23
|
-
} catch (err) {
|
|
23
|
+
} catch (err: any) {
|
|
24
24
|
return [{ field: this.options.fieldName, error: 'Invalid numeric value' }];
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -119,7 +119,7 @@ export class SelectionDynamicFieldCrudManager implements FieldCrudManager {
|
|
|
119
119
|
}
|
|
120
120
|
return false;
|
|
121
121
|
}
|
|
122
|
-
catch (error) {
|
|
122
|
+
catch (error: any) {
|
|
123
123
|
// Use the values method as a fallback, if the value method is not implemented
|
|
124
124
|
const values = await providerInstance.values('', ctxt);
|
|
125
125
|
const isValid = values.some(v => v.value === fieldValue);
|
|
@@ -23,7 +23,7 @@ export class ModuleMetadataHelperService {
|
|
|
23
23
|
const fileContent = await fs.readFile(configFilePath, 'utf8');
|
|
24
24
|
return JSON.parse(fileContent);
|
|
25
25
|
}
|
|
26
|
-
catch (error) {
|
|
26
|
+
catch (error: any) {
|
|
27
27
|
this.logger.error(`module metadata configuration non existent at: ${configFilePath}`);
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -60,7 +60,7 @@ export class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<Trigg
|
|
|
60
60
|
// Fallback
|
|
61
61
|
nestedResponse = String(raw);
|
|
62
62
|
}
|
|
63
|
-
} catch (err) {
|
|
63
|
+
} catch (err: any) {
|
|
64
64
|
this.triggerMcpClientSubscriberLogger.error("Error processing AI response:", err);
|
|
65
65
|
nestedResponse = `Error handling response: ${err?.message || String(err)}`;
|
|
66
66
|
}
|
|
@@ -1,64 +1,115 @@
|
|
|
1
|
-
import { Injectable, Logger } from
|
|
2
|
-
import { AuthGuard, PassportStrategy } from
|
|
3
|
-
import { Strategy } from
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { Injectable, Logger } from "@nestjs/common";
|
|
2
|
+
import { AuthGuard, PassportStrategy } from "@nestjs/passport";
|
|
3
|
+
import { Strategy } from "passport-facebook";
|
|
4
|
+
import {
|
|
5
|
+
FacebookAuthConfiguration,
|
|
6
|
+
isFacebookOAuthConfigured,
|
|
7
|
+
} from "src/helpers/facebook-oauth.helper";
|
|
8
|
+
import { v4 as uuid } from "uuid";
|
|
9
|
+
import type { SolidCoreSetting } from "../services/settings/default-settings-provider.service";
|
|
10
|
+
import { SettingService } from "../services/setting.service";
|
|
11
|
+
import { UserService } from "../services/user.service";
|
|
7
12
|
|
|
8
|
-
const DUMMY_CLIENT_ID =
|
|
9
|
-
const DUMMY_CLIENT_SECRET =
|
|
10
|
-
const DUMMY_CALLBACK_URL =
|
|
13
|
+
const DUMMY_CLIENT_ID = "DUMMY_CLIENT_ID";
|
|
14
|
+
const DUMMY_CLIENT_SECRET = "DUMMY_CLIENT_SECRET";
|
|
15
|
+
const DUMMY_CALLBACK_URL = "DUMMY_CALLBACK_URL";
|
|
11
16
|
|
|
12
17
|
@Injectable()
|
|
13
|
-
export class FacebookOauthGuard extends AuthGuard(
|
|
18
|
+
export class FacebookOauthGuard extends AuthGuard("facebook") {}
|
|
14
19
|
|
|
15
20
|
@Injectable()
|
|
16
|
-
export class FacebookOAuthStrategy extends PassportStrategy(
|
|
21
|
+
export class FacebookOAuthStrategy extends PassportStrategy(
|
|
22
|
+
Strategy,
|
|
23
|
+
"facebook",
|
|
24
|
+
) {
|
|
17
25
|
private readonly logger = new Logger(FacebookOAuthStrategy.name);
|
|
18
26
|
|
|
19
|
-
constructor(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
27
|
+
constructor(
|
|
28
|
+
private readonly userService: UserService,
|
|
29
|
+
private readonly settingService: SettingService,
|
|
30
|
+
) {
|
|
31
|
+
// Prefer settings cache (same source used by controller validation), fall back to env.
|
|
32
|
+
const clientID =
|
|
33
|
+
settingService.getConfigValue<SolidCoreSetting>("FACEBOOK_CLIENT_ID") ??
|
|
34
|
+
process.env.IAM_FACEBOOK_OAUTH_CLIENT_ID ??
|
|
35
|
+
DUMMY_CLIENT_ID;
|
|
36
|
+
const clientSecret =
|
|
37
|
+
settingService.getConfigValue<SolidCoreSetting>(
|
|
38
|
+
"FACEBOOK_CLIENT_SECRET",
|
|
39
|
+
) ??
|
|
40
|
+
process.env.IAM_FACEBOOK_OAUTH_CLIENT_SECRET ??
|
|
41
|
+
DUMMY_CLIENT_SECRET;
|
|
42
|
+
const callbackURL =
|
|
43
|
+
settingService.getConfigValue<SolidCoreSetting>(
|
|
44
|
+
"FACEBOOK_CALLBACK_URL",
|
|
45
|
+
) ??
|
|
46
|
+
process.env.IAM_FACEBOOK_OAUTH_CALLBACK_URL ??
|
|
47
|
+
DUMMY_CALLBACK_URL;
|
|
48
|
+
const redirectURL =
|
|
49
|
+
settingService.getConfigValue<SolidCoreSetting>(
|
|
50
|
+
"FACEBOOK_REDIRECT_URL",
|
|
51
|
+
) ?? process.env.IAM_FACEBOOK_OAUTH_REDIRECT_URL;
|
|
25
52
|
|
|
26
53
|
super({
|
|
27
54
|
clientID,
|
|
28
55
|
clientSecret,
|
|
29
56
|
callbackURL,
|
|
30
|
-
scope: [
|
|
31
|
-
|
|
57
|
+
scope: ["email"],
|
|
58
|
+
// Facebook Graph API expects "email" and "picture", not "emails"/"photos".
|
|
59
|
+
profileFields: ["id", "name", "email", "picture.type(large)"],
|
|
32
60
|
});
|
|
33
61
|
|
|
34
|
-
const facebookOauth: FacebookAuthConfiguration = {
|
|
62
|
+
const facebookOauth: FacebookAuthConfiguration = {
|
|
63
|
+
clientID,
|
|
64
|
+
clientSecret,
|
|
65
|
+
callbackURL,
|
|
66
|
+
redirectURL,
|
|
67
|
+
};
|
|
35
68
|
if (!isFacebookOAuthConfigured(facebookOauth)) {
|
|
36
|
-
this.logger.debug(
|
|
69
|
+
this.logger.debug("Facebook OAuth strategy is not configured");
|
|
70
|
+
} else {
|
|
71
|
+
this.logger.debug(
|
|
72
|
+
`Facebook OAuth configured with callbackURL=${callbackURL}`,
|
|
73
|
+
);
|
|
37
74
|
}
|
|
38
75
|
}
|
|
39
76
|
|
|
40
|
-
async validate(
|
|
77
|
+
async validate(
|
|
78
|
+
_accessToken: string,
|
|
79
|
+
_refreshToken: string,
|
|
80
|
+
profile: any,
|
|
81
|
+
done: any,
|
|
82
|
+
): Promise<any> {
|
|
41
83
|
const { id, name, emails, photos } = profile;
|
|
42
84
|
|
|
43
|
-
// generate a unique access code.
|
|
85
|
+
// generate a unique access code.
|
|
44
86
|
const loginAccessCode: string = uuid();
|
|
45
87
|
|
|
88
|
+
const email = emails && emails.length > 0 ? emails[0].value : null;
|
|
89
|
+
|
|
90
|
+
const firstName = name?.givenName || "";
|
|
91
|
+
const lastName = name?.familyName || "";
|
|
92
|
+
const fullName =
|
|
93
|
+
firstName || lastName
|
|
94
|
+
? `${firstName} ${lastName}`.trim()
|
|
95
|
+
: profile.displayName;
|
|
96
|
+
|
|
46
97
|
const user = {
|
|
47
|
-
provider:
|
|
98
|
+
provider: "facebook",
|
|
48
99
|
providerId: id,
|
|
49
|
-
email:
|
|
100
|
+
email: email,
|
|
50
101
|
name: `${name.givenName} ${name.familyName}`,
|
|
51
102
|
picture: photos?.[0]?.value,
|
|
52
103
|
accessCode: loginAccessCode,
|
|
53
104
|
};
|
|
54
105
|
|
|
55
|
-
// store the access code and the access token in the database.
|
|
56
|
-
await this.userService.resolveUserOnOauthFacebook({
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
106
|
+
// store the access code and the access token in the database.
|
|
107
|
+
await this.userService.resolveUserOnOauthFacebook({
|
|
108
|
+
...user,
|
|
109
|
+
accessToken: _accessToken,
|
|
110
|
+
refreshToken: null,
|
|
60
111
|
});
|
|
61
112
|
|
|
62
113
|
done(null, user);
|
|
63
114
|
}
|
|
64
|
-
}
|
|
115
|
+
}
|
|
@@ -56,7 +56,7 @@ export class SecurityRuleRepository extends SolidBaseRepository<SecurityRule> {
|
|
|
56
56
|
|
|
57
57
|
evaluatedRules.push(evaluatedRule);
|
|
58
58
|
|
|
59
|
-
} catch (error) {
|
|
59
|
+
} catch (error: any) {
|
|
60
60
|
this.logger.error(`Error parsing security rule: ${rule.securityRuleConfig}`, error);
|
|
61
61
|
this.logger.error(error.stack);
|
|
62
62
|
throw error;
|
|
@@ -238,7 +238,7 @@ export class ModuleMetadataSeederService {
|
|
|
238
238
|
|
|
239
239
|
//FIXME: Handle displaying the created users credentials in a better way.
|
|
240
240
|
// this.logger.log(`Newly created username is: ${usersDetail?.length > 0 ? usersDetail[0]?.username : ''} and password is ${usersDetail?.length > 0 ? usersDetail[0]?.password : ''}`);
|
|
241
|
-
} catch (error) {
|
|
241
|
+
} catch (error: any) {
|
|
242
242
|
this.logSeedFailureForCli(error, {
|
|
243
243
|
moduleName: currentModule,
|
|
244
244
|
step: currentStep,
|
|
@@ -463,7 +463,7 @@ export class ModuleMetadataSeederService {
|
|
|
463
463
|
await this.createPermissionIfNotExists(permissionName);
|
|
464
464
|
}
|
|
465
465
|
|
|
466
|
-
} catch (error) {
|
|
466
|
+
} catch (error: any) {
|
|
467
467
|
this.logger.error(error);
|
|
468
468
|
}
|
|
469
469
|
}
|
|
@@ -544,7 +544,7 @@ export class ModuleMetadataSeederService {
|
|
|
544
544
|
moduleRoot = path.dirname(
|
|
545
545
|
require.resolve('@solidxai/core/package.json'),
|
|
546
546
|
);
|
|
547
|
-
} catch (err) {
|
|
547
|
+
} catch (err: any) {
|
|
548
548
|
this.logger.debug(
|
|
549
549
|
'Could not resolve @solidxai/core from node_modules, assuming local execution',
|
|
550
550
|
);
|
|
@@ -610,7 +610,7 @@ export class ModuleMetadataSeederService {
|
|
|
610
610
|
moduleRoot = path.dirname(
|
|
611
611
|
require.resolve('@solidxai/core/package.json'),
|
|
612
612
|
);
|
|
613
|
-
} catch (err) {
|
|
613
|
+
} catch (err: any) {
|
|
614
614
|
this.logger.debug(
|
|
615
615
|
'Could not resolve @solidxai/core from node_modules, assuming local execution',
|
|
616
616
|
);
|
|
@@ -3900,7 +3900,7 @@
|
|
|
3900
3900
|
"type": "selectionStatic",
|
|
3901
3901
|
"defaultValue": "pending",
|
|
3902
3902
|
"length": 256,
|
|
3903
|
-
"required":
|
|
3903
|
+
"required": false,
|
|
3904
3904
|
"index": false,
|
|
3905
3905
|
"isSystem": false,
|
|
3906
3906
|
"selectionValueType": "string",
|
|
@@ -11552,7 +11552,7 @@
|
|
|
11552
11552
|
"enableGlobalSearch": true,
|
|
11553
11553
|
"create": true,
|
|
11554
11554
|
"edit": true,
|
|
11555
|
-
"delete":
|
|
11555
|
+
"delete": true
|
|
11556
11556
|
},
|
|
11557
11557
|
"children": [
|
|
11558
11558
|
{
|
|
@@ -11570,7 +11570,18 @@
|
|
|
11570
11570
|
"name": "name",
|
|
11571
11571
|
"label": "Name",
|
|
11572
11572
|
"sortable": true,
|
|
11573
|
-
"filterable": true
|
|
11573
|
+
"filterable": true,
|
|
11574
|
+
"isSearchable": true
|
|
11575
|
+
}
|
|
11576
|
+
},
|
|
11577
|
+
{
|
|
11578
|
+
"type": "field",
|
|
11579
|
+
"attrs": {
|
|
11580
|
+
"name": "description",
|
|
11581
|
+
"label": "Description",
|
|
11582
|
+
"sortable": true,
|
|
11583
|
+
"filterable": true,
|
|
11584
|
+
"isSearchable": true
|
|
11574
11585
|
}
|
|
11575
11586
|
}
|
|
11576
11587
|
]
|