## Summary - add an assignee_agent_bot_id column as an initital step to prototype this before fully switching to polymorphic assignee - update assignment APIs and conversation list / show endpoints to reflect assignee as agent bot - ensure webhook payloads contains agent bot assignee [Codex Task](https://chatgpt.com/codex/tasks/task_e_6912833377e48326b6641b9eee32d50f) --------- Co-authored-by: Pranav <pranav@chatwoot.com>
34 lines
1.0 KiB
Ruby
34 lines
1.0 KiB
Ruby
module EnsureCurrentAccountHelper
|
|
private
|
|
|
|
def current_account
|
|
@current_account ||= ensure_current_account
|
|
Current.account = @current_account
|
|
end
|
|
|
|
def ensure_current_account
|
|
account = Account.find(params[:account_id])
|
|
render_unauthorized('Account is suspended') and return unless account.active?
|
|
|
|
if current_user
|
|
account_accessible_for_user?(account)
|
|
elsif @resource.is_a?(AgentBot)
|
|
account_accessible_for_bot?(account)
|
|
end
|
|
account
|
|
end
|
|
|
|
def account_accessible_for_user?(account)
|
|
@current_account_user = account.account_users.find_by(user_id: current_user.id)
|
|
Current.account_user = @current_account_user
|
|
render_unauthorized('You are not authorized to access this account') unless @current_account_user
|
|
end
|
|
|
|
def account_accessible_for_bot?(account)
|
|
return if @resource.account_id == account.id
|
|
return if @resource.agent_bot_inboxes.find_by(account_id: account.id)
|
|
|
|
render_unauthorized('Bot is not authorized to access this account')
|
|
end
|
|
end
|