Module: Doorkeeper::Orm::Sequel::AccessTokenMixin::ClassMethods

Defined in:
lib/doorkeeper/orm/sequel/models/access_token_mixin.rb

Instance Method Summary collapse

Instance Method Details

#by_refresh_token(refresh_token) ⇒ Object



52
53
54
# File 'lib/doorkeeper/orm/sequel/models/access_token_mixin.rb', line 52

def by_refresh_token(refresh_token)
  first(refresh_token: refresh_token.to_s)
end

#by_token(token) ⇒ Object



48
49
50
# File 'lib/doorkeeper/orm/sequel/models/access_token_mixin.rb', line 48

def by_token(token)
  first(token: token.to_s)
end

#find_or_create_for(application, resource_owner_id, scopes, expires_in, use_refresh_token) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/doorkeeper/orm/sequel/models/access_token_mixin.rb', line 84

def find_or_create_for(application, resource_owner_id, scopes, expires_in, use_refresh_token)
  if Doorkeeper.configuration.reuse_access_token
    access_token = matching_token_for(application, resource_owner_id, scopes)
    return access_token if access_token && !access_token.expired?
  end

  create!(
    application_id: application.try(:id),
    resource_owner_id: resource_owner_id,
    scopes: scopes.to_s,
    expires_in: expires_in,
    use_refresh_token: use_refresh_token
  )
end

#last_authorized_token_for(application_id, resource_owner_id) ⇒ Object



99
100
101
102
103
104
105
# File 'lib/doorkeeper/orm/sequel/models/access_token_mixin.rb', line 99

def last_authorized_token_for(application_id, resource_owner_id)
  where(application_id: application_id,
        resource_owner_id: resource_owner_id,
        revoked_at: nil)
    .send(order_method, created_at_desc)
    .first
end

#matching_token_for(application, resource_owner_or_id, scopes) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
# File 'lib/doorkeeper/orm/sequel/models/access_token_mixin.rb', line 63

def matching_token_for(application, resource_owner_or_id, scopes)
  resource_owner_id = if resource_owner_or_id.respond_to?(:to_key)
                        resource_owner_or_id.id
                      else
                        resource_owner_or_id
                      end
  token = last_authorized_token_for(application.try(:id), resource_owner_id)
  if token && scopes_match?(token.scopes, scopes, application.try(:scopes))
    token
  end
end

#revoke_all_for(application_id, resource_owner, clock = Time) ⇒ Object



56
57
58
59
60
61
# File 'lib/doorkeeper/orm/sequel/models/access_token_mixin.rb', line 56

def revoke_all_for(application_id, resource_owner, clock = Time)
  where(application_id: application_id,
        resource_owner_id: resource_owner.id,
        revoked_at: nil)
    .update(revoked_at: clock.now.utc)
end

#scopes_match?(token_scopes, param_scopes, app_scopes) ⇒ Boolean

Returns:

  • (Boolean)


75
76
77
78
79
80
81
82
# File 'lib/doorkeeper/orm/sequel/models/access_token_mixin.rb', line 75

def scopes_match?(token_scopes, param_scopes, app_scopes)
  (token_scopes.blank? && param_scopes.blank?) ||
    Doorkeeper::OAuth::Helpers::ScopeChecker.match?(
      token_scopes.to_s,
      param_scopes,
      app_scopes
    )
end