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

33 lines
1.2 KiB
Ruby

module Users
module Settings
module Account
class ConnectedAccountsController < ApplicationController
layout 'fluid'
def index
@linked_accounts = current_user.user_identities.pluck(:provider)
end
def destroy
settings = ApplicationSettings.instance
if settings.values['azure_ad_apps']&.find { |v| v['provider_name'] == params[:provider] }
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