38 lines
1.1 KiB
Ruby
38 lines
1.1 KiB
Ruby
|
module Carto
|
||
|
class AccessToken < OauthToken
|
||
|
|
||
|
# Compatibility with ActiveRecord inheritance. When migrating to ActiveRecord,
|
||
|
# the class name changed from ::AccessToken to ::Carto::AccessToken
|
||
|
# Source: https://yiming.dev/blog/2017/12/07/add-sti-to-a-legacy-activerecord-model/
|
||
|
self.store_full_sti_class = false
|
||
|
|
||
|
before_create :set_authorized_at
|
||
|
after_create :store_api_credentials
|
||
|
after_destroy :clear_api_credentials
|
||
|
|
||
|
private
|
||
|
|
||
|
def metadata_key
|
||
|
"rails:oauth_access_tokens:#{token}"
|
||
|
end
|
||
|
|
||
|
def set_authorized_at
|
||
|
self.authorized_at = Time.now
|
||
|
end
|
||
|
|
||
|
def store_api_credentials
|
||
|
$api_credentials.hset metadata_key, "consumer_key", client_application.key
|
||
|
$api_credentials.hset metadata_key, "consumer_secret", client_application.secret
|
||
|
$api_credentials.hset metadata_key, "access_token_token", token
|
||
|
$api_credentials.hset metadata_key, "access_token_secret", secret
|
||
|
$api_credentials.hset metadata_key, "user_id", user_id
|
||
|
$api_credentials.hset metadata_key, "time", authorized_at
|
||
|
end
|
||
|
|
||
|
def clear_api_credentials
|
||
|
$api_credentials.del metadata_key
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|