Browse Source

Fix AI prompt in impersonation mode

pull/8115/head
Thomas Kaul 5 days ago
parent
commit
222e887cdf
  1. 19
      apps/api/src/app/endpoints/ai/ai.controller.ts
  2. 2
      apps/api/src/app/endpoints/ai/ai.module.ts

19
apps/api/src/app/endpoints/ai/ai.controller.ts

@ -1,11 +1,17 @@
import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator';
import { Impersonation } from '@ghostfolio/api/decorators/impersonation.decorator';
import { RequiresScope } from '@ghostfolio/api/decorators/requires-scope.decorator';
import { FilterDto } from '@ghostfolio/api/dtos/filter.dto';
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard';
import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor';
import { ApiService } from '@ghostfolio/api/services/api/api.service';
import { AiPromptResponse } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions';
import type { AiPromptMode, RequestWithUser } from '@ghostfolio/common/types';
import { scopes } from '@ghostfolio/common/scopes';
import type {
AiPromptMode,
ImpersonationContext,
RequestWithUser
} from '@ghostfolio/common/types';
import {
Controller,
@ -13,11 +19,9 @@ import {
Inject,
Param,
Query,
UseGuards,
UseInterceptors
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
import { AiService } from './ai.service';
@ -31,9 +35,10 @@ export class AiController {
@Get('prompt/:mode')
@HasPermission(permissions.readAiPrompt)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@RequiresScope(scopes.portfolioRead)
@UseInterceptors(TransformDataSourceInRequestInterceptor)
public async getPrompt(
@Impersonation() { userId, userSettings }: ImpersonationContext,
@Param('mode') mode: AiPromptMode,
@Query()
{ accounts, assetClasses, dataSource, symbol, tags }: FilterDto
@ -49,9 +54,9 @@ export class AiController {
const prompt = await this.aiService.getPrompt({
filters,
mode,
userId,
languageCode: this.request.user.settings.settings.language,
userCurrency: this.request.user.settings.settings.baseCurrency,
userId: this.request.user.id
userCurrency: userSettings.baseCurrency
});
return { prompt };

2
apps/api/src/app/endpoints/ai/ai.module.ts

@ -1,6 +1,7 @@
import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module';
import { ApiModule } from '@ghostfolio/api/services/api/api.module';
import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module';
import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module';
import { PortfolioTableModule } from '@ghostfolio/api/services/portfolio-table/portfolio-table.module';
import { PropertyModule } from '@ghostfolio/api/services/property/property.module';
@ -15,6 +16,7 @@ import { AiService } from './ai.service';
imports: [
ApiModule,
ConfigurationModule,
ImpersonationModule,
PortfolioTableModule,
PropertyModule,
TransformDataSourceInRequestModule

Loading…
Cancel
Save