diff --git a/.env.example b/.env.example
index 6e2b7fe56..b7ba0920d 100644
--- a/.env.example
+++ b/.env.example
@@ -155,10 +155,6 @@ TWITTER_ENVIRONMENT=
SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=
-#Linear Integration
-LINEAR_CLIENT_ID=
-LINEAR_CLIENT_SECRET=
-
# Google OAuth
GOOGLE_OAUTH_CLIENT_ID=
GOOGLE_OAUTH_CLIENT_SECRET=
diff --git a/app/controllers/linear/callbacks_controller.rb b/app/controllers/linear/callbacks_controller.rb
index c0688cefc..2eea49333 100644
--- a/app/controllers/linear/callbacks_controller.rb
+++ b/app/controllers/linear/callbacks_controller.rb
@@ -16,9 +16,12 @@ class Linear::CallbacksController < ApplicationController
private
def oauth_client
+ app_id = GlobalConfigService.load('LINEAR_CLIENT_ID', nil)
+ app_secret = GlobalConfigService.load('LINEAR_CLIENT_SECRET', nil)
+
OAuth2::Client.new(
- ENV.fetch('LINEAR_CLIENT_ID', nil),
- ENV.fetch('LINEAR_CLIENT_SECRET', nil),
+ app_id,
+ app_secret,
{
site: 'https://api.linear.app',
token_url: '/oauth/token',
diff --git a/app/controllers/super_admin/app_configs_controller.rb b/app/controllers/super_admin/app_configs_controller.rb
index b8f3bd9a9..43157fa0e 100644
--- a/app/controllers/super_admin/app_configs_controller.rb
+++ b/app/controllers/super_admin/app_configs_controller.rb
@@ -39,6 +39,8 @@ class SuperAdmin::AppConfigsController < SuperAdmin::ApplicationController
%w[AZURE_APP_ID AZURE_APP_SECRET]
when 'email'
['MAILER_INBOUND_EMAIL_DOMAIN']
+ when 'linear'
+ %w[LINEAR_CLIENT_ID LINEAR_CLIENT_SECRET]
else
%w[ENABLE_ACCOUNT_SIGNUP FIREBASE_PROJECT_ID FIREBASE_CREDENTIALS]
end
diff --git a/app/helpers/linear/integration_helper.rb b/app/helpers/linear/integration_helper.rb
index 19f16832d..67df836ce 100644
--- a/app/helpers/linear/integration_helper.rb
+++ b/app/helpers/linear/integration_helper.rb
@@ -32,7 +32,7 @@ module Linear::IntegrationHelper
private
def client_secret
- @client_secret ||= ENV.fetch('LINEAR_CLIENT_SECRET', nil)
+ @client_secret ||= GlobalConfigService.load('LINEAR_CLIENT_SECRET', nil)
end
def decode_token(token, secret)
diff --git a/app/models/integrations/app.rb b/app/models/integrations/app.rb
index b57a109db..84844b38a 100644
--- a/app/models/integrations/app.rb
+++ b/app/models/integrations/app.rb
@@ -55,9 +55,10 @@ class Integrations::App
end
def build_linear_action
+ app_id = GlobalConfigService.load('LINEAR_CLIENT_ID', nil)
[
"#{params[:action]}?response_type=code",
- "client_id=#{ENV.fetch('LINEAR_CLIENT_ID', nil)}",
+ "client_id=#{app_id}",
"redirect_uri=#{self.class.linear_integration_url}",
"state=#{encode_state}",
'scope=read,write',
diff --git a/app/views/super_admin/application/_icons.html.erb b/app/views/super_admin/application/_icons.html.erb
index b39ffe4f0..4472701ee 100644
--- a/app/views/super_admin/application/_icons.html.erb
+++ b/app/views/super_admin/application/_icons.html.erb
@@ -147,4 +147,8 @@
+
+
+
+
diff --git a/config/installation_config.yml b/config/installation_config.yml
index 1a804b707..57a5a5faf 100644
--- a/config/installation_config.yml
+++ b/config/installation_config.yml
@@ -243,3 +243,16 @@
locked: false
description: 'Contents on your firebase credentials json file'
## ------ End of Configs added for FCM v1 notifications ------ ##
+
+## ------ Configs added for Linear ------ ##
+- name: LINEAR_CLIENT_ID
+ display_title: 'Linear Client ID'
+ value:
+ locked: false
+ description: 'Linear client ID'
+- name: LINEAR_CLIENT_SECRET
+ display_title: 'Linear Client Secret'
+ value:
+ locked: false
+ description: 'Linear client secret'
+## ------ End of Configs added for Linear ------ ##
diff --git a/enterprise/app/helpers/super_admin/features.yml b/enterprise/app/helpers/super_admin/features.yml
index 506b95832..5aa5fc160 100644
--- a/enterprise/app/helpers/super_admin/features.yml
+++ b/enterprise/app/helpers/super_admin/features.yml
@@ -79,3 +79,9 @@ microsoft:
enabled: true
icon: 'icon-microsoft'
config_key: 'microsoft'
+linear:
+ name: 'Linear'
+ description: 'Configuration for setting up Linear'
+ enabled: true
+ icon: 'icon-linear'
+ config_key: 'linear'