diff --git a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json index 1d935dd64..b05a730e6 100644 --- a/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json +++ b/app/javascript/dashboard/i18n/locale/en/inboxMgmt.json @@ -302,6 +302,9 @@ "ENABLE_CSAT": { "ENABLED": "Enabled", "DISABLED": "Disabled" + }, + "ENABLE_HMAC": { + "LABEL": "Enable" } }, "DELETE": { @@ -351,6 +354,8 @@ "AUTO_ASSIGNMENT_SUB_TEXT": "Enable or disable the automatic assignment of new conversations to the agents added to this inbox.", "HMAC_VERIFICATION": "User Identity Validation", "HMAC_DESCRIPTION": "Inorder to validate the user's identity, the SDK allows you to pass an `identifier_hash` for each user. You can generate HMAC using 'sha256' with the key shown here.", + "HMAC_MANDATORY_VERIFICATION": "Enforce User Identity Validation", + "HMAC_MANDATORY_DESCRIPTION": "If enabled, Chatwoot SDKs setUser method will not work unless the `identifier_hash` is provided for each user.", "INBOX_IDENTIFIER": "Inbox Identifier", "INBOX_IDENTIFIER_SUB_TEXT": "Use the `inbox_identifier` token shown here to authentication your API clients.", "FORWARD_EMAIL_TITLE": "Forward to Email", diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue index 63e74e2fc..b33ce4ed3 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/Settings.vue @@ -316,6 +316,24 @@ > + +
+ + +
+
@@ -377,6 +395,7 @@ export default { avatarUrl: '', selectedAgents: [], greetingEnabled: true, + hmacMandatory: null, greetingMessage: '', autoAssignment: false, emailCollectEnabled: false, @@ -511,6 +530,9 @@ export default { e.target.value ); }, + handleHmacFlag() { + this.updateInbox(); + }, toggleInput(selected, current) { if (selected.includes(current)) { const newSelectedFlags = selected.filter(flag => flag !== current); @@ -533,6 +555,7 @@ export default { this.selectedInboxName = this.inbox.name; this.webhookUrl = this.inbox.webhook_url; this.greetingEnabled = this.inbox.greeting_enabled || false; + this.hmacMandatory = this.inbox.hmac_mandatory || false; this.greetingMessage = this.inbox.greeting_message || ''; this.autoAssignment = this.inbox.enable_auto_assignment; this.emailCollectEnabled = this.inbox.enable_email_collect; @@ -589,6 +612,7 @@ export default { welcome_tagline: this.channelWelcomeTagline || '', selectedFeatureFlags: this.selectedFeatureFlags, reply_time: this.replyTime || 'in_a_few_minutes', + hmac_mandatory: this.hmacMandatory, }, }; if (this.avatarFile) { diff --git a/app/models/channel/web_widget.rb b/app/models/channel/web_widget.rb index 38f6e2eb5..debee3bd5 100644 --- a/app/models/channel/web_widget.rb +++ b/app/models/channel/web_widget.rb @@ -29,7 +29,7 @@ class Channel::WebWidget < ApplicationRecord include FlagShihTzu self.table_name = 'channel_web_widgets' - EDITABLE_ATTRS = [:website_url, :widget_color, :welcome_title, :welcome_tagline, :reply_time, :pre_chat_form_enabled, + EDITABLE_ATTRS = [:website_url, :widget_color, :welcome_title, :welcome_tagline, :reply_time, :pre_chat_form_enabled, :hmac_mandatory, { pre_chat_form_options: [:pre_chat_message, :require_email] }, { selected_feature_flags: [] }].freeze diff --git a/app/views/api/v1/models/_inbox.json.jbuilder b/app/views/api/v1/models/_inbox.json.jbuilder index 5c25cedd0..e27ebcac4 100644 --- a/app/views/api/v1/models/_inbox.json.jbuilder +++ b/app/views/api/v1/models/_inbox.json.jbuilder @@ -20,6 +20,7 @@ json.callback_webhook_url resource.callback_webhook_url ## WebWidget Attributes json.widget_color resource.channel.try(:widget_color) json.website_url resource.channel.try(:website_url) +json.hmac_mandatory resource.channel.try(:hmac_mandatory) json.welcome_title resource.channel.try(:welcome_title) json.welcome_tagline resource.channel.try(:welcome_tagline) json.web_widget_script resource.channel.try(:web_widget_script)