scinote-web/app/controllers/users/settings/account/connected_accounts_controller.rb

33 lines
1.1 KiB
Ruby
Raw Normal View History

module Users
module Settings
module Account
class ConnectedAccountsController < ApplicationController
layout 'fluid'
def index
@linked_accounts = current_user.user_identities.pluck(:provider)
end
def destroy
if Rails.configuration.x.azure_ad_apps.select { |_, v| v[:provider] == params[:provider] }.present?
provider = params[:provider]
else
flash[:error] = t('users.settings.account.connected_accounts.errors.not_found')
return
end
ActiveRecord::Base.transaction do
__send__("#{provider}_pre_destroy".to_sym) if respond_to?("#{provider}_pre_destroy".to_sym, true)
current_user.user_identities.where(provider: provider).take&.destroy!
end
flash[:success] = t('users.settings.account.connected_accounts.unlink_success')
rescue StandardError
flash[:error] ||= t('users.settings.account.connected_accounts.errors.generic')
ensure
@linked_accounts = current_user.user_identities.pluck(:provider)
render :index
end
end
end
end
end