Sha256: 1311aa46288f350c71932edb330522b8e70005d56d735bd7270812d08f6f5f4a

Contents?: true

Size: 744 Bytes

Versions: 17

Compression:

Stored size: 744 Bytes

Contents

event :validate_permission_to_assign_roles, :validate, on: :save do
  return unless (fr = forbidden_roles).present?

  errors.add :permission_denied,
             "You don't have permission to assign the role#{'s' if fr.size > 1} "\
             "#{fr.map(&:name).to_sentence}"   # LOCALIZE
end

def forbidden_roles
  # restore old roles for permission check
  with_old_role_permissions do |new_roles|
    new_roles.select do |card|
      !Card.fetch(card, "*members").ok? :update
    end
  end
end

def with_old_role_permissions
  new_roles = item_cards
  new_content = content
  left.clear_roles
  Auth.update_always_cache Card::Auth.as_id, nil
  self.content = db_content_before_act
  yield new_roles
ensure
  self.content = new_content
end

Version data entries

17 entries across 17 versions & 2 rubygems

Version Path
card-mod-account-0.11.4 set/right/roles.rb
card-mod-account-0.11.3 set/right/roles.rb
card-mod-account-0.11.2 set/right/roles.rb
card-mod-account-0.11.1 set/right/roles.rb
card-mod-account-0.11.0 set/right/roles.rb
card-1.100.0 mod/account/set/right/roles.rb
card-1.99.6 mod/account/set/right/roles.rb
card-1.99.5 mod/account/set/right/roles.rb
card-1.99.4 mod/account/set/right/roles.rb
card-1.99.3 mod/account/set/right/roles.rb
card-1.99.2 mod/account/set/right/roles.rb
card-1.99.1 mod/account/set/right/roles.rb
card-1.99.0 mod/account/set/right/roles.rb
card-1.98.3 mod/account/set/right/roles.rb
card-1.98.2 mod/account/set/right/roles.rb
card-1.98.1 mod/account/set/right/roles.rb
card-1.98.0 mod/account/set/right/roles.rb