Browse Source

Refactoring

pull/4615/head
Thomas Kaul 4 months ago
parent
commit
2e4497b30a
  1. 2
      apps/api/src/app/admin/admin.controller.ts
  2. 25
      apps/api/src/app/admin/admin.service.ts
  3. 4
      apps/api/src/services/data-provider/data-provider.service.ts

2
apps/api/src/app/admin/admin.controller.ts

@ -68,7 +68,7 @@ export class AdminController {
@HasPermission(permissions.accessAdminControl)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async getAdminData(): Promise<AdminData> {
return this.adminService.get();
return this.adminService.get({ user: this.request.user });
}
@HasPermission(permissions.accessAdminControl)

25
apps/api/src/app/admin/admin.service.ts

@ -25,12 +25,11 @@ import {
AdminMarketDataItem,
AdminUsers,
AssetProfileIdentifier,
DataProviderInfo,
EnhancedSymbolProfile,
Filter
} from '@ghostfolio/common/interfaces';
import { Sector } from '@ghostfolio/common/interfaces/sector.interface';
import { MarketDataPreset } from '@ghostfolio/common/types';
import { MarketDataPreset, UserWithSettings } from '@ghostfolio/common/types';
import {
BadRequestException,
@ -135,7 +134,9 @@ export class AdminService {
}
}
public async get(): Promise<AdminData> {
public async get({ user }: { user: UserWithSettings }): Promise<AdminData> {
const dataSources = await this.dataProviderService.getDataSources({ user });
const [settings, transactionCount, userCount] = await Promise.all([
this.propertyService.get(),
this.prismaService.order.count(),
@ -146,7 +147,11 @@ export class AdminService {
settings,
transactionCount,
userCount,
dataProviders: this.getDataProviders(),
dataProviders: dataSources.map((dataSource) => {
return this.dataProviderService
.getDataProvider(dataSource)
.getDataProviderInfo();
}),
version: environment.version
};
}
@ -635,18 +640,6 @@ export class AdminService {
});
}
private getDataProviders(): DataProviderInfo[] {
return this.configurationService
.get('DATA_SOURCES')
.concat('GHOSTFOLIO')
.sort()
.map((dataSource) => {
return this.dataProviderService
.getDataProvider(DataSource[dataSource])
.getDataProviderInfo();
});
}
private getExtendedPrismaClient() {
Logger.debug('Connect extended prisma client', 'AdminService');

4
apps/api/src/services/data-provider/data-provider.service.ts

@ -26,6 +26,7 @@ import {
LookupItem,
LookupResponse
} from '@ghostfolio/common/interfaces';
import { hasRole } from '@ghostfolio/common/permissions';
import type { Granularity, UserWithSettings } from '@ghostfolio/common/types';
import { Inject, Injectable, Logger } from '@nestjs/common';
@ -169,6 +170,7 @@ export class DataProviderService {
let dataSourcesKey: 'DATA_SOURCES' | 'DATA_SOURCES_LEGACY' = 'DATA_SOURCES';
if (
!hasRole(user, 'ADMIN') &&
isBefore(user.createdAt, new Date('2025-03-23')) &&
this.configurationService.get('DATA_SOURCES_LEGACY')?.length > 0
) {
@ -185,7 +187,7 @@ export class DataProviderService {
PROPERTY_API_KEY_GHOSTFOLIO
)) as string;
if (ghostfolioApiKey) {
if (ghostfolioApiKey || hasRole(user, 'ADMIN')) {
dataSources.push('GHOSTFOLIO');
}

Loading…
Cancel
Save