diff --git a/app/controllers/super_admin/app_configs_controller.rb b/app/controllers/super_admin/app_configs_controller.rb
index 550b6c893..8ab1b1cd9 100644
--- a/app/controllers/super_admin/app_configs_controller.rb
+++ b/app/controllers/super_admin/app_configs_controller.rb
@@ -45,6 +45,8 @@ class SuperAdmin::AppConfigsController < SuperAdmin::ApplicationController
%w[LINEAR_CLIENT_ID LINEAR_CLIENT_SECRET]
when 'instagram'
%w[INSTAGRAM_APP_ID INSTAGRAM_APP_SECRET INSTAGRAM_VERIFY_TOKEN INSTAGRAM_API_VERSION ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT]
+ when 'github'
+ %w[GITHUB_CLIENT_ID GITHUB_CLIENT_SECRET]
else
%w[ENABLE_ACCOUNT_SIGNUP FIREBASE_PROJECT_ID FIREBASE_CREDENTIALS]
end
diff --git a/app/javascript/dashboard/i18n/locale/en/integrations.json b/app/javascript/dashboard/i18n/locale/en/integrations.json
index 8af57975c..dca1d056f 100644
--- a/app/javascript/dashboard/i18n/locale/en/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/en/integrations.json
@@ -15,6 +15,14 @@
},
"ERROR": "There was an error connecting to Shopify. Please try again or contact support if the issue persists."
},
+ "GITHUB": {
+ "TITLE": "Connect Github",
+ "LABEL": "Github Client ID",
+ "PLACEHOLDER": "Enter your Github Client ID",
+ "HELP": "Enter your Github Client ID",
+ "CANCEL": "Cancel",
+ "SUBMIT": "Connect"
+ },
"HEADER": "Integrations",
"DESCRIPTION": "Chatwoot integrates with multiple tools and services to improve your team's efficiency. Explore the list below to configure your favorite apps.",
"LEARN_MORE": "Learn more about integrations",
diff --git a/app/javascript/dashboard/routes/dashboard/settings/integrations/Github.vue b/app/javascript/dashboard/routes/dashboard/settings/integrations/Github.vue
new file mode 100644
index 000000000..78e6b7314
--- /dev/null
+++ b/app/javascript/dashboard/routes/dashboard/settings/integrations/Github.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
diff --git a/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js b/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js
index e50eccb3a..2cbeaa0ea 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js
+++ b/app/javascript/dashboard/routes/dashboard/settings/integrations/integrations.routes.js
@@ -9,7 +9,7 @@ import Slack from './Slack.vue';
import SettingsContent from '../Wrapper.vue';
import Linear from './Linear.vue';
import Shopify from './Shopify.vue';
-
+import Github from './Github.vue';
export default {
routes: [
{
@@ -90,6 +90,16 @@ export default {
},
props: route => ({ code: route.query.code }),
},
+ {
+ path: 'github',
+ name: 'settings_integrations_github',
+ component: Github,
+ meta: {
+ featureFlag: FEATURE_FLAGS.INTEGRATIONS,
+ permissions: ['administrator'],
+ },
+ props: route => ({ code: route.query.code }),
+ },
{
path: 'shopify',
name: 'settings_integrations_shopify',
diff --git a/app/models/integrations/app.rb b/app/models/integrations/app.rb
index 1f88cdd4d..080438ffd 100644
--- a/app/models/integrations/app.rb
+++ b/app/models/integrations/app.rb
@@ -51,6 +51,8 @@ class Integrations::App
GlobalConfigService.load('LINEAR_CLIENT_ID', nil).present?
when 'shopify'
account.feature_enabled?('shopify_integration') && GlobalConfigService.load('SHOPIFY_CLIENT_ID', nil).present?
+ when 'github'
+ account.feature_enabled?('github_integration') && GlobalConfigService.load('GITHUB_CLIENT_ID', nil).present?
else
true
end
diff --git a/app/views/super_admin/application/_icons.html.erb b/app/views/super_admin/application/_icons.html.erb
index fb10c1035..0fb6d085b 100644
--- a/app/views/super_admin/application/_icons.html.erb
+++ b/app/views/super_admin/application/_icons.html.erb
@@ -159,4 +159,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/config/features.yml b/config/features.yml
index ee0b498ce..5ae0255f1 100644
--- a/config/features.yml
+++ b/config/features.yml
@@ -166,3 +166,6 @@
- name: channel_instagram
display_name: Instagram Channel
enabled: true
+- name: github_integration
+ display_name: Github Integration
+ enabled: false
diff --git a/config/installation_config.yml b/config/installation_config.yml
index 1a891c420..d95ca37b3 100644
--- a/config/installation_config.yml
+++ b/config/installation_config.yml
@@ -319,3 +319,17 @@
value: 'v22.0'
locked: true
# ------- End of Instagram Channel Related Config ------- #
+
+# ------- Github Integration Config ------- #
+- name: GITHUB_CLIENT_ID
+ display_title: 'Github Client ID'
+ value:
+ locked: false
+ description: 'Github client ID'
+- name: GITHUB_CLIENT_SECRET
+ display_title: 'Github Client Secret'
+ value:
+ locked: false
+ description: 'Github client secret'
+ type: secret
+## ------ End of Github Integration Config ------- #
diff --git a/config/integration/apps.yml b/config/integration/apps.yml
index b4d0d8394..e44c17c77 100644
--- a/config/integration/apps.yml
+++ b/config/integration/apps.yml
@@ -186,3 +186,10 @@ shopify:
i18n_key: shopify
hook_type: account
allow_multiple_hooks: false
+github:
+ id: github
+ logo: github.png
+ i18n_key: github
+ action: /github
+ hook_type: account
+ allow_multiple_hooks: false
diff --git a/config/locales/en.yml b/config/locales/en.yml
index a4341927e..5b9fad58f 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -234,6 +234,9 @@ en:
shopify:
name: 'Shopify'
description: 'Connect your Shopify store to access order details, customer information, and product data directly within your conversations and helps your support team provide faster, more contextual assistance to your customers.'
+ github:
+ name: 'Github'
+ description: 'Connect your Github account to access your repositories, issues, and pull requests directly within your conversations and helps your support team provide faster, more contextual assistance to your customers.'
captain:
copilot_error: 'Please connect an assistant to this inbox to use Copilot'
copilot_limit: 'You are out of Copilot credits. You can buy more credits from the billing section.'
diff --git a/enterprise/app/helpers/super_admin/features.yml b/enterprise/app/helpers/super_admin/features.yml
index 3767d6468..1b64beb56 100644
--- a/enterprise/app/helpers/super_admin/features.yml
+++ b/enterprise/app/helpers/super_admin/features.yml
@@ -97,3 +97,9 @@ shopify:
enabled: true
icon: 'icon-shopify'
config_key: 'shopify'
+github:
+ name: 'Github'
+ description: 'Configuration for setting up Github'
+ enabled: true
+ icon: 'icon-github'
+ config_key: 'github'
diff --git a/public/dashboard/images/integrations/github-dark.png b/public/dashboard/images/integrations/github-dark.png
new file mode 100644
index 000000000..d66bdeb47
Binary files /dev/null and b/public/dashboard/images/integrations/github-dark.png differ
diff --git a/public/dashboard/images/integrations/github.png b/public/dashboard/images/integrations/github.png
new file mode 100644
index 000000000..10b895fc8
Binary files /dev/null and b/public/dashboard/images/integrations/github.png differ