class Userbin::Client
Attributes
request_context[RW]
Public Class Methods
install_proxy_methods(*names)
click to toggle source
# File lib/userbin/client.rb, line 6 def self.install_proxy_methods(*names) names.each do |name| class_eval <<-RUBY, __FILE__, __LINE__ + 1 def #{name}(*args) Userbin::User.new('$current').#{name}(*args) end RUBY end end
new(request, response, opts = {})
click to toggle source
# File lib/userbin/client.rb, line 20 def initialize(request, response, opts = {}) # Save a reference in the per-request store so that the request # middleware in request.rb can access it RequestStore.store[:userbin] = self if response.class.name == 'ActionDispatch::Cookies::CookieJar' cookies = Userbin::CookieStore::Rack.new(response) else cookies = Userbin::CookieStore::Base.new(request, response) end @store = Userbin::TokenStore.new(cookies) @request_context = { ip: request.ip, user_agent: request.user_agent, cookie_id: cookies['__cid'] } end
Public Instance Methods
device_trusted?()
click to toggle source
# File lib/userbin/client.rb, line 115 def device_trusted? @store.session_token ? @store.session_token.device_trusted? : false end
has_default_pairing?()
click to toggle source
# File lib/userbin/client.rb, line 127 def has_default_pairing? @store.session_token ? @store.session_token.has_default_pairing? : false end
login(user_id, user_attrs = {})
click to toggle source
# File lib/userbin/client.rb, line 73 def login(user_id, user_attrs = {}) # Clear the session token if any @store.session_token = nil user = Userbin::User.new(user_id.to_s) session = user.sessions.create( user: user_attrs, trusted_device_token: @store.trusted_device_token) # Set the session token for use in all subsequent requests @store.session_token = session.token session end
logout()
click to toggle source
# File lib/userbin/client.rb, line 87 def logout return unless @store.session_token # Destroy the current session specified in the session token begin sessions.destroy('$current') rescue Userbin::ApiError # ignored end # Clear the session token @store.session_token = nil end
mfa_enabled?()
click to toggle source
# File lib/userbin/client.rb, line 111 def mfa_enabled? @store.session_token ? @store.session_token.mfa_enabled? : false end
mfa_in_progress?()
click to toggle source
# File lib/userbin/client.rb, line 119 def mfa_in_progress? @store.session_token ? @store.session_token.mfa_in_progress? : false end
mfa_required?()
click to toggle source
# File lib/userbin/client.rb, line 123 def mfa_required? @store.session_token ? @store.session_token.mfa_required? : false end
session_token()
click to toggle source
# File lib/userbin/client.rb, line 40 def session_token @store.session_token end
session_token=(session_token)
click to toggle source
# File lib/userbin/client.rb, line 44 def session_token=(session_token) @store.session_token = session_token end
track(opts = {})
click to toggle source
# File lib/userbin/client.rb, line 131 def track(opts = {}) Userbin::Event.post('/v1/events', opts) end
trust_device(attrs = {})
click to toggle source
# File lib/userbin/client.rb, line 100 def trust_device(attrs = {}) unless @store.session_token raise Userbin::UserUnauthorizedError, 'Need to call login before trusting device' end trusted_device = trusted_devices.create(attrs) # Set the session token for use in all subsequent requests @store.trusted_device_token = trusted_device.token end