From 873cee8df23d6271a3f75e1135030bd951919816 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 29 Sep 2026 21:07:30 +0200 Subject: [PATCH] Fix sustainable retirement income for redacted values --- .../portfolio/fire/fire-page.component.ts | 6 ++++ .../app/pages/portfolio/fire/fire-page.html | 30 +++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts index dc787ae26a..fd91bef562 100644 --- a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts +++ b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts @@ -8,6 +8,7 @@ import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { hasScope, scopes } from '@ghostfolio/common/scopes'; import { GfFireCalculatorComponent } from '@ghostfolio/ui/fire-calculator'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { DataService } from '@ghostfolio/ui/services'; @@ -53,6 +54,7 @@ export class GfFirePageComponent implements OnInit { protected fireWealth: FireWealth; protected hasImpersonationId: boolean; + protected hasPermissionToShowValues: boolean; protected hasPermissionToUpdateUserSettings: boolean; protected isLoading = false; protected retirementDate: Date; @@ -142,6 +144,10 @@ export class GfFirePageComponent implements OnInit { if (state?.user) { this.user = state.user; + this.hasPermissionToShowValues = + hasScope(this.user.scopes, scopes.portfolioReadValues) && + !this.user.settings.isRestrictedView; + this.hasPermissionToUpdateUserSettings = this.user.subscription?.type === SubscriptionType.Basic ? false diff --git a/apps/client/src/app/pages/portfolio/fire/fire-page.html b/apps/client/src/app/pages/portfolio/fire/fire-page.html index 7315f10cb0..3f12ddc126 100644 --- a/apps/client/src/app/pages/portfolio/fire/fire-page.html +++ b/apps/client/src/app/pages/portfolio/fire/fire-page.html @@ -73,7 +73,11 @@ [isCurrency]="true" [locale]="user?.settings?.locale" [unit]="user?.settings?.baseCurrency" - [value]="withdrawalRatePerYear?.toNumber()" + [value]=" + hasPermissionToShowValues + ? withdrawalRatePerYear?.toNumber() + : null + " /> per year @@ -84,7 +88,11 @@ [isCurrency]="true" [locale]="user?.settings?.locale" [unit]="user?.settings?.baseCurrency" - [value]="withdrawalRatePerMonth?.toNumber()" + [value]=" + hasPermissionToShowValues + ? withdrawalRatePerMonth?.toNumber() + : null + " /> per month, based on your total assets of @@ -94,7 +102,11 @@ [isCurrency]="true" [locale]="user?.settings?.locale" [unit]="user?.settings?.baseCurrency" - [value]="fireWealth?.today.valueInBaseCurrency" + [value]=" + hasPermissionToShowValues + ? fireWealth?.today.valueInBaseCurrency + : null + " /> and a safe withdrawal rate (SWR) of @@ -137,7 +149,11 @@ [isCurrency]="true" [locale]="user?.settings?.locale" [unit]="user?.settings?.baseCurrency" - [value]="withdrawalRatePerYearProjected?.toNumber()" + [value]=" + hasPermissionToShowValues + ? withdrawalRatePerYearProjected?.toNumber() + : null + " /> per year @@ -148,7 +164,11 @@ [isCurrency]="true" [locale]="user?.settings?.locale" [unit]="user?.settings?.baseCurrency" - [value]="withdrawalRatePerMonthProjected?.toNumber()" + [value]=" + hasPermissionToShowValues + ? withdrawalRatePerMonthProjected?.toNumber() + : null + " /> per month, assuming a