cartodb/lib/tasks/oauth.rake
2020-06-15 10:58:47 +08:00

90 lines
3.0 KiB
Ruby

require_relative '../../lib/cartodb/trending_maps'
require_relative '../../lib/static_maps_url_helper'
namespace :cartodb do
namespace :oauth do
desc 'Delete expired oauth access tokens'
task destroy_expired_access_tokens: :environment do
Carto::OauthAccessToken.expired.find_each do |token|
begin
token.destroy!
rescue StandardError => e
CartoDB::Logger.error(message: 'Could not destroy expired access token', exception: e)
end
end
end
desc 'Delete expired oauth authorization codes'
task destroy_expired_authorization_codes: :environment do
Carto::OauthAuthorizationCode.expired.find_each do |code|
begin
code.destroy!
rescue StandardError => e
CartoDB::Logger.error(message: 'Could not destroy expired authorization code', exception: e)
end
end
end
desc 'Delete expired oauth refresh tokens'
task destroy_expired_refresh_tokens: :environment do
Carto::OauthRefreshToken.expired.find_each do |code|
begin
code.destroy!
rescue StandardError => e
CartoDB::Logger.error(message: 'Could not destroy expired refresh token', exception: e)
end
end
end
desc 'Delete all expired oauth objects'
task destroy_expired_oauth_keys: [
:destroy_expired_access_tokens,
:destroy_expired_refresh_tokens,
:destroy_expired_authorization_codes
]
# Since ownership_role creation is already handled in oauth_app_user
# this task is meant to run just once for existing oauth_app_users in every cloud
desc 'Create ownership roles for oauth_app_users missing it.'
task create_ownership_role: :environment do
Carto::OauthAppUser.find_each do |oau|
begin
next if oau.exists_ownership_role?
oau.create_ownership_role
oau.grant_ownership_role_privileges
rescue StandardError => e
CartoDB::Logger.error(message: 'Could not create ownership role', exception: e)
end
end
end
desc 'Track existing OauthApps and OauthAppUsers in Segment'
task track_oauth_apps: :environment do
Carto::OauthApp.find_each do |app|
begin
app_properties = {
user_id: app.user_id,
app_id: app.id,
app_name: app.name,
timestamp: app.created_at
}
Carto::Tracking::Events::CreatedOauthApp.new(app.user_id, app_properties).report
app.oauth_app_users.find_each do |app_user|
app_user_properties = {
user_id: app_user.user_id,
app_id: app.id,
app_name: app.name,
timestamp: app_user.created_at
}
Carto::Tracking::Events::CreatedOauthAppUser.new(app_user.user_id, app_user_properties).report
end
rescue StandardError => e
CartoDB::Logger.error(message: 'Could not track event', exception: e)
end
end
end
end
end