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'