From 3a90653d12ee6facec0ddd042a92721e0de1c46b Mon Sep 17 00:00:00 2001 From: Sojan Date: Wed, 22 May 2024 18:13:28 -0700 Subject: [PATCH] chore: test out agent permissions --- app/models/account_user.rb | 8 ++++++++ app/views/api/v1/models/_user.json.jbuilder | 1 + config/installation_config.yml | 8 ++++++++ .../enterprise/super_admin/app_configs_controller.rb | 2 +- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/models/account_user.rb b/app/models/account_user.rb index 78b874334..0ce623346 100644 --- a/app/models/account_user.rb +++ b/app/models/account_user.rb @@ -49,6 +49,14 @@ class AccountUser < ApplicationRecord ::Agents::DestroyJob.perform_later(account, user) end + def permissions + if administrator? + GlobalConfigService.load('CHATWOOT_ADMIN_PERMISSIONS', 'account_manage').split(',') + else + GlobalConfigService.load('CHATWOOT_AGENT_PERMISSIONS', 'conversation_manage').split(',') + end + end + def push_event_data { id: id, diff --git a/app/views/api/v1/models/_user.json.jbuilder b/app/views/api/v1/models/_user.json.jbuilder index 74df836c0..3d8131f60 100644 --- a/app/views/api/v1/models/_user.json.jbuilder +++ b/app/views/api/v1/models/_user.json.jbuilder @@ -24,6 +24,7 @@ json.accounts do json.status account_user.account.status json.active_at account_user.active_at json.role account_user.role + json.permissions account_user.permissions # the actual availability user has configured json.availability account_user.availability # availability derived from presence diff --git a/config/installation_config.yml b/config/installation_config.yml index b0f4549aa..4b9c06ba2 100644 --- a/config/installation_config.yml +++ b/config/installation_config.yml @@ -163,6 +163,14 @@ value: display_title: 'Clearbit API Key' description: 'This API key is used for onboarding the users, to pre-fill account data.' +- name: CHATWOOT_ADMIN_PERMISSIONS + value: + display_title: Chatwoot Admin Permissions + description: 'Comma separated list of permissions for a Chatwoot admin' +- name: CHATWOOT_AGENT_PERMISSIONS + value: + display_title: Chatwoot Agent Permissions + description: 'Comma separated list of permissions for a Chatwoot agent' # ------- End of Chatwoot Internal Config for Cloud ----# # ------- Chatwoot Internal Config for Self Hosted ----# diff --git a/enterprise/app/controllers/enterprise/super_admin/app_configs_controller.rb b/enterprise/app/controllers/enterprise/super_admin/app_configs_controller.rb index ae1394a24..0ad6fa65d 100644 --- a/enterprise/app/controllers/enterprise/super_admin/app_configs_controller.rb +++ b/enterprise/app/controllers/enterprise/super_admin/app_configs_controller.rb @@ -30,6 +30,6 @@ module Enterprise::SuperAdmin::AppConfigsController end def internal_config_options - %w[CHATWOOT_INBOX_TOKEN CHATWOOT_INBOX_HMAC_KEY ANALYTICS_TOKEN CLEARBIT_API_KEY] + %w[CHATWOOT_INBOX_TOKEN CHATWOOT_INBOX_HMAC_KEY ANALYTICS_TOKEN CLEARBIT_API_KEY CHATWOOT_ADMIN_PERMISSIONS CHATWOOT_AGENT_PERMISSIONS] end end