Class: Leash::Provider::AccessToken
- Inherits:
-
Ohm::Model
- Object
- Ohm::Model
- Leash::Provider::AccessToken
- Defined in:
- app/models/leash/provider/access_token.rb
Constant Summary collapse
- MAX_ASSIGN_TRIES =
20
Class Method Summary collapse
- .assign!(app_name, owner) ⇒ Object
- .assign_from_auth_code!(auth_code) ⇒ Object
- .find_by_access_token(access_token) ⇒ Object
- .find_by_app_name_and_owner(app_name, owner) ⇒ Object
- .owner_key(owner) ⇒ Object
- .valid?(access_token) ⇒ Boolean
Instance Method Summary collapse
Class Method Details
.assign!(app_name, owner) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/models/leash/provider/access_token.rb', line 17 def self.assign!(app_name, owner) tries = 0 access_token = nil loop do begin access_token = SecureRandom.urlsafe_base64(32) = Time.now.to_i self.create app_name: app_name, owner: owner_key(owner), access_token: access_token, created_at: , accessed_at: break rescue Ohm::UniqueIndexViolation => e tries += 1 fail if tries > MAX_ASSIGN_TRIES end end access_token end |
.assign_from_auth_code!(auth_code) ⇒ Object
39 40 41 42 43 |
# File 'app/models/leash/provider/access_token.rb', line 39 def self.assign_from_auth_code!(auth_code) access_token = assign! auth_code.app_name, auth_code.owner auth_code.delete access_token end |
.find_by_access_token(access_token) ⇒ Object
51 52 53 |
# File 'app/models/leash/provider/access_token.rb', line 51 def self.find_by_access_token(access_token) self.find(access_token: access_token).sort_by(:created_at, order: "DESC").first end |
.find_by_app_name_and_owner(app_name, owner) ⇒ Object
56 57 58 |
# File 'app/models/leash/provider/access_token.rb', line 56 def self.find_by_app_name_and_owner(app_name, owner) self.find(app_name: app_name, owner: owner_key(owner)).sort_by(:created_at, order: "DESC").first end |
.owner_key(owner) ⇒ Object
61 62 63 64 65 66 67 |
# File 'app/models/leash/provider/access_token.rb', line 61 def self.owner_key(owner) if owner.is_a? ActiveRecord::Base "#{owner.class.name}##{owner.id}" else owner end end |
.valid?(access_token) ⇒ Boolean
46 47 48 |
# File 'app/models/leash/provider/access_token.rb', line 46 def self.valid?(access_token) self.find(access_token: access_token).size != 0 end |
Instance Method Details
#owner_instance ⇒ Object
70 71 72 73 74 |
# File 'app/models/leash/provider/access_token.rb', line 70 def owner_instance owner_klass, owner_id = owner.split("#", 2) owner_klass.classify.constantize.find(owner_id) end |
#touch! ⇒ Object
77 78 79 |
# File 'app/models/leash/provider/access_token.rb', line 77 def touch! update accessed_at: Time.now.to_i end |