class Actn::Api::Client
Constants
- DEFAULT_ACL
- TTL
Attributes
secret[RW]
Public Class Methods
find_for_auth(domain, apikey)
click to toggle source
# File lib/actn/api/client.rb, line 25 def self.find_for_auth domain, apikey client = self.find_by(domain: domain, apikey: apikey) client end
Public Instance Methods
auth_by_secret(secret)
click to toggle source
# File lib/actn/api/client.rb, line 30 def auth_by_secret secret self.secret == secret end
auth_by_session(session_id)
click to toggle source
# File lib/actn/api/client.rb, line 34 def auth_by_session session_id return unless client_session = self.sessions[session_id] if BCrypt::Password.new(client_session[0]) == session_id if Time.now.to_f - client_session[1] > TTL invalidated = self.update(sessions: self.sessions.tap{|s| s.delete session_id }) return false else return true end end end
can?(resource)
click to toggle source
# File lib/actn/api/client.rb, line 64 def can? resource return if self.acl['disallow'].include?("*") || self.acl['disallow'].include?(resource) self.acl['allow'].include?("*") || self.acl['allow'].include?(resource) end
credentials()
click to toggle source
# File lib/actn/api/client.rb, line 54 def credentials {'apikey' => self.apikey, 'secret' => @secret} end
reset_credentials!()
click to toggle source
# File lib/actn/api/client.rb, line 58 def reset_credentials! reset_credentials _update self end
set_session(session_id)
click to toggle source
# File lib/actn/api/client.rb, line 46 def set_session session_id self.update( { sessions: {session_id => [BCrypt::Password.create(session_id), Time.now.to_f] }} ) end
to_json(options = {})
click to toggle source
Calls superclass method
# File lib/actn/api/client.rb, line 69 def to_json options = {} super(options.merge(methods: [:credentials], exclude: [:sessions, :secret_hash])) end
Private Instance Methods
reset_credentials()
click to toggle source
# File lib/actn/api/client.rb, line 82 def reset_credentials self.apikey = SecureRandom.hex @secret = SecureRandom.hex @hash = BCrypt::Password.create(@secret) self.secret_hash = @hash end
set_defaults()
click to toggle source
# File lib/actn/api/client.rb, line 75 def set_defaults self.domain = self.domain.to_domain self.sessions ||= {} self.acl ||= DEFAULT_ACL reset_credentials unless self.persisted? end