module Surbase::AccountsController
Public Instance Methods
auth_callback()
click to toggle source
# File lib/surbase/controller.rb, line 74 def auth_callback auth = request.env[ "omniauth.auth" ] result_api( login_callback({ :auth => auth, :provider => auth[ "provider" ], :uid => auth[ "uid" ], :provider_id => %Q(#{auth[ "provider" ]}\t#{auth[ "uid" ]}), :name => auth[ "info" ][ "name" ], :icon => auth[ "info" ][ "image" ], :access_token => { :token => auth[ "credentials" ][ "token" ], :secret => auth[ "credentials" ][ "secret" ], }, :login_key => create_key_random }) ) end
login()
click to toggle source
# File lib/surbase/controller.rb, line 70 def login redirect_to "/auth/#{params[ :provider ]}" end
Protected Instance Methods
login_callback( info )
click to toggle source
# File lib/surbase/controller.rb, line 92 def login_callback( info ) status = Status.new account = nil ActiveRecord::Base.transaction do account_data = { :provider_id => info[ :provider_id ], :login_key => info[ :login_key ], } account = Model.load( ::Account, [ "provider_id=?", account_data[ :provider_id ] ], account_data ) account.save! provider_account_data = { :account_id => account.id, :name => info[ :name ], :icon => info[ :icon ], :encrypted_access_token => encrypt_json( info[ :access_token ], info[ :login_key ] ), } provider_account = Model.load( ::ProviderAccount, [ "account_id=?", account.id ], provider_account_data ) provider_account.save! end status.code = Status::Success status.values = { :provider_info => { :provider => info[ :provider ], :name => info[ :name ], :icon => info[ :icon ], }, :account_id => @cipher.encrypt( @cipher.encode( account.id.to_s ), info[ :login_key ] ), :login_key => info[ :login_key ], } status rescue => e error_status( Status::ModelSaveError, e ) end