module Zaikio::OAuthClient::Authenticatable
Public Instance Methods
approve()
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 20 def approve # rubocop:disable Metrics/MethodLength,Metrics/AbcSize if params[:error].present? redirect_to send( respond_to?(:error_path_for) ? :error_path_for : :default_error_path_for, params[:error], description: params[:error_description] ) and return end if session[:state].present? && params[:state] != session[:state] return redirect_to send( respond_to?(:error_path_for) ? :error_path_for : :default_error_path_for, "invalid_state" ) end access_token = create_access_token origin = session[:origin] session.delete(:origin) session[:zaikio_access_token_id] = access_token.id unless access_token.organization? redirect_to send( respond_to?(:after_approve_path_for) ? :after_approve_path_for : :default_after_approve_path_for, access_token, origin ) end
destroy()
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 49 def destroy access_token_id = session[:zaikio_access_token_id] session.delete(:zaikio_access_token_id) session.delete(:origin) redirect_to send( respond_to?(:after_destroy_path_for) ? :after_destroy_path_for : :default_after_destroy_path_for, access_token_id ) end
new()
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 6 def new opts = params.permit(:client_name, :show_signup, :prompt, :prompt_email_confirmation, :force_login, :state, :lang) opts[:lang] ||= I18n.locale if defined?(I18n) client_name = opts.delete(:client_name) opts[:state] ||= session[:state] = SecureRandom.urlsafe_base64(32) redirect_to oauth_client.auth_code.authorize_url( redirect_uri: approve_url(client_name), scope: oauth_scope, **opts ) end
Private Instance Methods
approve_url(client_name = nil)
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 62 def approve_url(client_name = nil) zaikio_oauth_client.approve_session_url(client_name) end
client_config()
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 83 def client_config client_config = Zaikio::OAuthClient.configuration.find!(client_name) client_config = client_config.org_config if use_org_config? client_config or raise ActiveRecord::RecordNotFound end
client_name()
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 79 def client_name params[:client_name] || Zaikio::OAuthClient.configuration.all_client_names.first end
create_access_token()
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 70 def create_access_token access_token_response = oauth_client.auth_code.get_token(params[:code]) Zaikio::AccessToken.build_from_access_token( access_token_response, requested_scopes: client_config.default_scopes ).tap(&:save!) end
default_after_approve_path_for(access_token, origin)
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 98 def default_after_approve_path_for(access_token, origin) session[:zaikio_person_id] = access_token.bearer_id unless access_token.organization? origin || main_app.root_path end
default_after_destroy_path_for(_access_token_id)
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 104 def default_after_destroy_path_for(_access_token_id) session.delete(:origin) main_app.root_path end
default_error_path_for(error_code, description: nil)
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 110 def default_error_path_for(error_code, description: nil) raise Zaikio::OAuthClient::InvalidScopesError, description if error_code == "invalid_scope" unless error_code == "access_denied" flash[:alert] = I18n.t("zaikio.oauth_client.error_occured", error: error_code, description: description) end main_app.root_path end
oauth_client()
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 90 def oauth_client Zaikio::OAuthClient.for(client_name) end
oauth_scope()
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 94 def oauth_scope client_config.scopes_for_auth(params[:organization_id]).join(",") end
use_org_config?()
click to toggle source
# File lib/zaikio/oauth_client/authenticatable.rb, line 66 def use_org_config? false end