From 9bc5d7ec3544700dc8958db625f029446453cc86 Mon Sep 17 00:00:00 2001 From: aaronskiba Date: Thu, 25 Jul 2024 11:33:18 -0600 Subject: [PATCH] Add rake task to remove deprecated permissions This rake task removes deprecated permissions both from users and from the perms db table itself. --- lib/tasks/data_cleanup.rake | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/tasks/data_cleanup.rake b/lib/tasks/data_cleanup.rake index e4aa5eebd6..e144bea060 100644 --- a/lib/tasks/data_cleanup.rake +++ b/lib/tasks/data_cleanup.rake @@ -109,6 +109,26 @@ namespace :data_cleanup do p 'Done' end + desc 'Remove deprecated permissions from users and delete them from perms table' + task remove_deprecated_perms: :environment do + deprecated_perms = Perm.where(name: %w[admin user org_admin]) + deprecated_perms_ids = deprecated_perms.pluck(:id) + users_with_deprecated_perms = User.includes(:perms).where(perms: { id: deprecated_perms_ids }) + p "#{users_with_deprecated_perms.count} users have deprecated permissions" + p '----------------------------------------------------------------------' + p 'Deleting the following deprecated permissions for the following users:' + users_with_deprecated_perms.each do |user| + perms_to_delete = user.perms.where(id: deprecated_perms_ids) + p "#{user.email}: #{perms_to_delete.pluck(:name)}" + p '----------------------------------------------------------------------' + user.perms.delete(perms_to_delete) + end + p "Removing #{deprecated_perms.count} deprecated permissions from perms table:" + p '----------------------------------------------------------------------' + deprecated_perms.destroy_all + p 'Done' + end + private def report_known_invalidations(results, model_name, validation_error)