parent
e51ea11e9c
commit
82dd384a79
@ -1,50 +1,42 @@
|
|||||||
namespace :cartodb do
|
namespace :cartodb do
|
||||||
namespace :user do
|
namespace :user do
|
||||||
desc 'Change user username'
|
desc 'Change user username'
|
||||||
task :change_username, [:old_username, :new_username] => :environment do |_task, args|
|
task :change_username, [:old_username, :new_username] => :environment do |_task, args|
|
||||||
raise "You must pass an existing username, and a new username for the existing user" unless args[:old_username] && args[:new_username]
|
raise "You must pass an existing username, and a new username for the existing user" unless args[:old_username] && args[:new_username]
|
||||||
|
|
||||||
user = User.find(username: args[:old_username])
|
user = User.find(username: args[:old_username])
|
||||||
raise "User with username #{args[:old_username]} doesn't exist!" unless user
|
raise "User with username #{args[:old_username]} doesn't exist!" unless user
|
||||||
|
|
||||||
# Update username and database_schema
|
# Update username and database_schema
|
||||||
user.username = args[:new_username]
|
user.username = args[:new_username]
|
||||||
user.database_schema = args[:new_username]
|
user.database_schema = args[:new_username]
|
||||||
user.save
|
user.save
|
||||||
|
|
||||||
# Update Redis metadata
|
# Update Redis metadata
|
||||||
user.save_metadata
|
user.save_metadata
|
||||||
|
|
||||||
# Rename user and database schema
|
# Rename user and database schema
|
||||||
user.in_database({as: :superuser}) do |db|
|
user.in_database(as: :superuser) { |db|
|
||||||
db.run("ALTER SCHEMA \"#{args[:old_username]}\" RENAME TO \"#{args[:new_username]}\";")
|
db.run("ALTER SCHEMA \"#{args[:old_username]}\" RENAME TO \"#{args[:new_username]}\";")
|
||||||
end
|
}
|
||||||
|
|
||||||
# Regenerate API Keys
|
# Regenerate API Keys
|
||||||
user.carto_user.api_keys.each { |api_key|
|
user.carto_user.api_keys.find(&:master?).try(:regenerate_token!)
|
||||||
if api_key.master?
|
|
||||||
api_key.regenerate_token!
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fix map analysis
|
# Fix map analysis
|
||||||
user.carto_user.tables.each do |table|
|
user.carto_user.tables.each do |table|
|
||||||
table.dependent_visualizations.each do |visualization|
|
table.dependent_visualizations.each do |visualization|
|
||||||
visualization.analyses.each do |analysis|
|
visualization.analyses.each do |analysis|
|
||||||
analysis.update_table_name(
|
analysis.update_table_name(
|
||||||
"#{args[:old_username]}.#{table.name}",
|
"#{args[:old_username]}.#{table.name}",
|
||||||
"\"#{args[:new_username]}\".#{table.name}"
|
"\"#{args[:new_username]}\".#{table.name}"
|
||||||
)
|
)
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Fix public maps
|
|
||||||
Carto::Visualization.where(type: 'derived', user: user.carto_user).each { |visualization|
|
|
||||||
if visualization.published?
|
|
||||||
visualization.create_mapcap!
|
|
||||||
end
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Fix public maps
|
||||||
|
Carto::Visualization.where(type: 'derived', user: user.carto_user).select(&:published?).each { |visualization| visualization.create_mapcap! }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in new issue