trabajo-afectivo/app/controllers/external_credentials_controller.rb

82 lines
2.1 KiB
Ruby
Raw Normal View History

2016-10-19 03:11:36 +00:00
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
class ExternalCredentialsController < ApplicationController
prepend_before_action :permission_check
def index
model_index_render(ExternalCredential, params)
end
def show
model_show_render(ExternalCredential, params)
end
def create
2015-12-21 00:48:49 +00:00
model_create_render(ExternalCredential, params)
end
def update
2015-12-21 00:48:49 +00:00
model_update_render(ExternalCredential, params)
end
def destroy
model_destroy_render(ExternalCredential, params)
end
2015-12-21 00:48:49 +00:00
def app_verify
render json: { attributes: ExternalCredential.app_verify(params.permit!.to_h) }, status: :ok
2015-12-21 00:48:49 +00:00
rescue => e
logger.error e
2015-12-21 00:48:49 +00:00
render json: { error: e.message }, status: :ok
end
def link_account
provider = params[:provider].downcase
attributes = ExternalCredential.request_account_to_link(provider)
session[:request_token] = attributes[:request_token]
redirect_to attributes[:authorize_url]
end
def callback
provider = params[:provider].downcase
channel = ExternalCredential.link_account(provider, session[:request_token], params.permit!.to_h)
session[:request_token] = nil
2015-12-21 00:48:49 +00:00
redirect_to app_url(provider, channel.id)
end
private
def callback_url(provider)
ExternalCredential.callback_url(provider)
end
2015-12-21 00:48:49 +00:00
def app_url(provider, channel_id)
ExternalCredential.app_url(provider, channel_id)
2015-12-21 00:48:49 +00:00
end
def permission_check
if params[:id].present? && ExternalCredential.exists?(params[:id])
external_credential = ExternalCredential.find(params[:id])
raise 'No such ExternalCredential!' if !external_credential
authentication_check(permission: ["admin.channel_#{external_credential.name}"])
return
end
if params[:name].present? || params[:provider].present?
if params[:name].present?
name = params[:name].downcase
elsif params[:provider].present?
name = params[:provider].downcase
else
raise 'Missing name/provider!'
end
authentication_check(permission: ["admin.channel_#{name}"])
return
end
authentication_check(permission: ['admin'])
end
end