Providers sharing (#1273)

* third party provider scoping

* Simplify logic and allow only admins to mange providers

* Broadcast fixes

* FIX tests and build

* Fixes

* Reviews

* Scope merchants

* DRY fixes
This commit is contained in:
soky srm
2026-03-25 17:47:04 +01:00
committed by GitHub
parent 1627cf197b
commit 9410e5b38d
74 changed files with 588 additions and 583 deletions

View File

@@ -12,7 +12,7 @@ class Assistant::Function::GetAccounts < Assistant::Function
def call(params = {})
{
as_of_date: Date.current,
accounts: family.accounts.includes(:balances, :account_providers).map do |account|
accounts: user.accessible_accounts.includes(:balances, :account_providers).map do |account|
{
name: account.name,
balance: account.balance,

View File

@@ -27,15 +27,15 @@ class Assistant::Function::GetBalanceSheet < Assistant::Function
oldest_account_start_date: family.oldest_entry_date,
currency: family.currency,
net_worth: {
current: family.balance_sheet.net_worth_money.format,
current: family.balance_sheet(user: user).net_worth_money.format,
monthly_history: historical_data(period)
},
assets: {
current: family.balance_sheet.assets.total_money.format,
current: family.balance_sheet(user: user).assets.total_money.format,
monthly_history: historical_data(period, classification: "asset")
},
liabilities: {
current: family.balance_sheet.liabilities.total_money.format,
current: family.balance_sheet(user: user).liabilities.total_money.format,
monthly_history: historical_data(period, classification: "liability")
},
insights: insights_data
@@ -44,7 +44,7 @@ class Assistant::Function::GetBalanceSheet < Assistant::Function
private
def historical_data(period, classification: nil)
scope = family.accounts.visible
scope = user.accessible_accounts.visible
scope = scope.where(classification: classification) if classification.present?
if period.start_date == Date.current
@@ -65,8 +65,8 @@ class Assistant::Function::GetBalanceSheet < Assistant::Function
end
def insights_data
assets = family.balance_sheet.assets.total
liabilities = family.balance_sheet.liabilities.total
assets = family.balance_sheet(user: user).assets.total
liabilities = family.balance_sheet(user: user).liabilities.total
ratio = liabilities.zero? ? 0 : (liabilities / assets.to_f)
{

View File

@@ -151,7 +151,7 @@ class Assistant::Function::GetHoldings < Assistant::Function
end
def investment_accounts
family.accounts.visible.where(accountable_type: SUPPORTED_ACCOUNT_TYPES)
user.accessible_accounts.visible.where(accountable_type: SUPPORTED_ACCOUNT_TYPES)
end
def investment_account_names