From f6650b5025372c771b1091e699d774d73d2c5575 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 20 May 2024 11:52:42 +0530 Subject: [PATCH] feat: move Azure config to installation_config (#9481) This PR has the following changes 1. Add `AZURE_APP_ID` and `AZURE_APP_SECRET` to installation config 2. Add Microsoft config to `super_admin/features.yml` 3. Replace usage of `ENV.fetch` with `GlobalConfigService.load` for fetch App ID and Secret --- app/controllers/concerns/microsoft_concern.rb | 5 ++++- app/controllers/dashboard_controller.rb | 2 +- app/controllers/microsoft_controller.rb | 2 +- app/controllers/super_admin/app_configs_controller.rb | 2 ++ app/services/microsoft/refresh_oauth_token_service.rb | 2 +- app/views/super_admin/application/_icons.html.erb | 3 +++ config/installation_config.yml | 10 ++++++++++ enterprise/app/helpers/super_admin/features.yml | 6 ++++++ 8 files changed, 28 insertions(+), 4 deletions(-) diff --git a/app/controllers/concerns/microsoft_concern.rb b/app/controllers/concerns/microsoft_concern.rb index 3aa3e4e81..0f37bd03f 100644 --- a/app/controllers/concerns/microsoft_concern.rb +++ b/app/controllers/concerns/microsoft_concern.rb @@ -2,7 +2,10 @@ module MicrosoftConcern extend ActiveSupport::Concern def microsoft_client - ::OAuth2::Client.new(ENV.fetch('AZURE_APP_ID', nil), ENV.fetch('AZURE_APP_SECRET', nil), + app_id = GlobalConfigService.load('AZURE_APP_ID', nil) + app_secret = GlobalConfigService.load('AZURE_APP_SECRET', nil) + + ::OAuth2::Client.new(app_id, app_secret, { site: 'https://login.microsoftonline.com', authorize_url: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize', diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index 047fd10c3..521d027cc 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -58,7 +58,7 @@ class DashboardController < ActionController::Base FB_APP_ID: GlobalConfigService.load('FB_APP_ID', ''), FACEBOOK_API_VERSION: GlobalConfigService.load('FACEBOOK_API_VERSION', 'v17.0'), IS_ENTERPRISE: ChatwootApp.enterprise?, - AZURE_APP_ID: ENV.fetch('AZURE_APP_ID', ''), + AZURE_APP_ID: GlobalConfigService.load('AZURE_APP_ID', ''), GIT_SHA: GIT_HASH } end diff --git a/app/controllers/microsoft_controller.rb b/app/controllers/microsoft_controller.rb index 07e58d4db..e6a12dafa 100644 --- a/app/controllers/microsoft_controller.rb +++ b/app/controllers/microsoft_controller.rb @@ -12,6 +12,6 @@ class MicrosoftController < ApplicationController end def microsoft_indentity - @identity_json = ENV.fetch('AZURE_APP_ID', nil) + @identity_json = GlobalConfigService.load('AZURE_APP_ID', nil) end end diff --git a/app/controllers/super_admin/app_configs_controller.rb b/app/controllers/super_admin/app_configs_controller.rb index 6223f7174..9d9494fc4 100644 --- a/app/controllers/super_admin/app_configs_controller.rb +++ b/app/controllers/super_admin/app_configs_controller.rb @@ -35,6 +35,8 @@ class SuperAdmin::AppConfigsController < SuperAdmin::ApplicationController @allowed_configs = case @config when 'facebook' %w[FB_APP_ID FB_VERIFY_TOKEN FB_APP_SECRET IG_VERIFY_TOKEN FACEBOOK_API_VERSION ENABLE_MESSENGER_CHANNEL_HUMAN_AGENT] + when 'microsoft' + %w[AZURE_APP_ID AZURE_APP_SECRET] when 'email' ['MAILER_INBOUND_EMAIL_DOMAIN'] else diff --git a/app/services/microsoft/refresh_oauth_token_service.rb b/app/services/microsoft/refresh_oauth_token_service.rb index a038dd68b..63aeb2e2c 100644 --- a/app/services/microsoft/refresh_oauth_token_service.rb +++ b/app/services/microsoft/refresh_oauth_token_service.rb @@ -50,7 +50,7 @@ class Microsoft::RefreshOauthTokenService # Builds the OAuth strategy for Microsoft Graph def build_oauth_strategy - ::MicrosoftGraphAuth.new(nil, ENV.fetch('AZURE_APP_ID'), ENV.fetch('AZURE_APP_SECRET')) + ::MicrosoftGraphAuth.new(nil, GlobalConfigService.load('AZURE_APP_ID', ''), GlobalConfigService.load('AZURE_APP_SECRET', '')) end # Builds the token service using OAuth2 diff --git a/app/views/super_admin/application/_icons.html.erb b/app/views/super_admin/application/_icons.html.erb index 54f3fbad1..3b1c840e8 100644 --- a/app/views/super_admin/application/_icons.html.erb +++ b/app/views/super_admin/application/_icons.html.erb @@ -1,4 +1,7 @@ + + + diff --git a/config/installation_config.yml b/config/installation_config.yml index 80bfbfd61..b0f4549aa 100644 --- a/config/installation_config.yml +++ b/config/installation_config.yml @@ -123,6 +123,16 @@ type: boolean # ------- End of Facebook Channel Related Config ------- # +# MARK: Microsoft Email Channel Config +- name: AZURE_APP_ID + display_title: 'Azure App ID' + description: 'The App ID that will be used to authenticate with customer Microsoft accounts. Find more details on setting up Azure here: https://chwt.app/dev/ms' + locked: false +- name: AZURE_APP_SECRET + display_title: 'Azure App Secret' + locked: false +# End of Microsoft Email Channel Config + # ------- Chatwoot Internal Config for Cloud ----# - name: CHATWOOT_INBOX_TOKEN value: diff --git a/enterprise/app/helpers/super_admin/features.yml b/enterprise/app/helpers/super_admin/features.yml index a3413a325..4529fb02b 100644 --- a/enterprise/app/helpers/super_admin/features.yml +++ b/enterprise/app/helpers/super_admin/features.yml @@ -66,3 +66,9 @@ help_center: description: 'Allow agents to create help center articles and publish them in a portal.' enabled: true icon: 'icon-book-2-line' +microsoft: + name: 'Microsoft' + description: 'Configuration for setting up Microsoft Email' + enabled: true + icon: 'icon-microsoft' + config_key: 'microsoft'