cartodb-4.42/app/models/carto/request_token.rb

45 lines
1.2 KiB
Ruby
Raw Permalink Normal View History

2024-04-06 13:25:13 +08:00
module Carto
class RequestToken < OauthToken
# Compatibility with ActiveRecord inheritance. When migrating to ActiveRecord,
# the class name changed from ::RequestToken to ::Carto::RequestToken
# Source: https://yiming.dev/blog/2017/12/07/add-sti-to-a-legacy-activerecord-model/
self.store_full_sti_class = false
attr_accessor :provided_oauth_verifier
def authorize!(user)
return false if authorized?
new_attributes = { user: user, authorized_at: Time.now }
new_attributes[:verifier] = OAuth::Helper.generate_key(20)[0,20] unless oauth10?
update!(new_attributes)
end
def exchange!
return false unless authorized?
return false unless oauth10? || verifier == provided_oauth_verifier
ActiveRecord::Base.transaction do
access_token = Carto::AccessToken.create!(user: user, client_application: client_application)
invalidate!
access_token
end
end
def to_query
oauth10? ? super : "#{super}&oauth_callback_confirmed=true"
end
def oob?
callback_url == 'oob'
end
def oauth10?
(defined? OAUTH_10_SUPPORT) && OAUTH_10_SUPPORT && callback_url.blank?
end
end
end