From db9c468773004647c2c6b1ffecfcf7bcfc1adf4f Mon Sep 17 00:00:00 2001 From: felixjordandev Date: Wed, 25 Jun 2025 23:17:00 +0600 Subject: [PATCH] Implement user conversion to UserWithSettings format for permission checks in analysis page --- .../analysis/analysis-page.component.ts | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts index 367624b09..286bfecf4 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -12,7 +12,7 @@ import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, hasReadRestrictedAccessPermission, permissions } from '@ghostfolio/common/permissions'; -import type { AiPromptMode, GroupBy } from '@ghostfolio/common/types'; +import type { AiPromptMode, GroupBy, UserWithSettings } from '@ghostfolio/common/types'; import { translate } from '@ghostfolio/ui/i18n'; import { Clipboard } from '@angular/cdk/clipboard'; @@ -103,6 +103,27 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { : savingsRatePerMonth; } + // Helper method to convert User to UserWithSettings format required by hasReadRestrictedAccessPermission + private convertUserToUserWithSettings(user: User): UserWithSettings { + return { + ...user, + Access: user.access.map(access => ({ + ...access, + createdAt: new Date(), + updatedAt: new Date(), + granteeUserId: '', + userId: '' + })), + Settings: { + createdAt: new Date(), + updatedAt: new Date(), + id: user.id, + settings: user.settings, + userId: user.id + } + } as UserWithSettings; + } + public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; @@ -115,7 +136,7 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { if (this.hasImpersonationId && this.user) { this.hasRestrictedAccess = hasReadRestrictedAccessPermission({ impersonationId, - user: this.user as any + user: this.convertUserToUserWithSettings(this.user) }); } else { this.hasRestrictedAccess = false; @@ -133,7 +154,7 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { if (impersonationId) { this.hasRestrictedAccess = hasReadRestrictedAccessPermission({ impersonationId, - user: this.user as any + user: this.convertUserToUserWithSettings(this.user) }); }