Adding migration to explicitly grant VO permission where it is currently implicitly granted via managers/owners

In preparation for removing implicitly granted permissions
This commit is contained in:
Rob Harrington
2016-02-25 09:58:15 +11:00
parent 186d1c1f26
commit 51d77d5781
2 changed files with 25 additions and 1 deletions

View File

@@ -0,0 +1,24 @@
class GrantExplicitVariantOverridePermissions < ActiveRecord::Migration
def up
hubs = Enterprise.is_distributor
hubs.each do |hub|
next if hub.owner.admin?
explicitly_granting_producer_ids = hub.relationships_as_child
.with_permission(:create_variant_overrides).map(&:parent_id)
managed_producer_ids = Enterprise.managed_by(hub.owner).is_primary_producer.pluck(:id)
implicitly_granting_producer_ids = managed_producer_ids - explicitly_granting_producer_ids - [hub.id]
# create explicit VO permissions for producers currently granting implicit permission
Enterprise.where(id: implicitly_granting_producer_ids).each do |producer|
relationship = producer.relationships_as_parent.find_or_initialize_by_child_id(hub.id)
permission = relationship.permissions.find_or_initialize_by_name(:create_variant_overrides)
relationship.save! unless permission.persisted?
end
end
end
def down
end
end

View File

@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20160218235221) do
ActiveRecord::Schema.define(:version => 20160224034034) do
create_table "account_invoices", :force => true do |t|
t.integer "user_id", :null => false