cartodb-4.42/app/models/carto/helpers/oauth_services.rb
2024-04-06 05:25:13 +00:00

58 lines
1.8 KiB
Ruby

module Carto::OauthServices
OAUTH_SERVICE_TITLES = {
'gdrive' => 'Google Drive',
'dropbox' => 'Dropbox',
'box' => 'Box',
'mailchimp' => 'MailChimp',
'instagram' => 'Instagram',
'bigquery' => 'Google BigQuery'
}.freeze
OAUTH_SERVICE_REVOKE_URLS = {
'mailchimp' => 'http://admin.mailchimp.com/account/oauth2/',
'instagram' => 'http://instagram.com/accounts/manage_access/'
}.freeze
def get_oauth_services
datasources = CartoDB::Datasources::DatasourcesFactory.get_all_oauth_datasources
array = []
datasources.each do |serv|
obj ||= Hash.new
title = OAUTH_SERVICE_TITLES.fetch(serv, serv)
revoke_url = OAUTH_SERVICE_REVOKE_URLS.fetch(serv, nil)
enabled = case serv
when 'gdrive'
Cartodb.get_config(:oauth, serv, 'client_id')
when 'box'
Cartodb.get_config(:oauth, serv, 'client_id')
when 'dropbox'
Cartodb.get_config(:oauth, serv, 'app_key')
when 'mailchimp'
Cartodb.get_config(:oauth, serv, 'app_key') && has_feature_flag?('mailchimp_import')
when 'instagram'
Cartodb.get_config(:oauth, serv, 'app_key') && has_feature_flag?('instagram_import')
when 'bigquery'
Cartodb.get_config(:oauth, serv, 'client_id') &&
Carto::Connector.provider_available?('bigquery', self)
else
true
end
if enabled
oauth = oauths.select(serv)
obj['name'] = serv
obj['title'] = title
obj['revoke_url'] = revoke_url
obj['connected'] = !oauth.nil? ? true : false
array.push(obj)
end
end
array
end
end