class Mumukit::Auth::Permissions::Diff
Attributes
changes[RW]
Public Class Methods
diff(old_permissions, new_permissions)
click to toggle source
# File lib/mumuki/classroom/permissions_diff.rb, line 66 def self.diff(old_permissions, new_permissions) return Mumukit::Auth::Permissions::Diff.new if new_permissions.nil? old_permissions = old_permissions.to_mumukit_permissions new_permissions = new_permissions.to_mumukit_permissions new.tap do |it| Mumukit::Auth::Roles::ROLES.each do |role| it.compare_grants! role, old_permissions, new_permissions, :removed it.compare_grants! role, new_permissions, old_permissions, :added end end end
new()
click to toggle source
# File lib/mumuki/classroom/permissions_diff.rb, line 47 def initialize @changes = [] end
Public Instance Methods
as_json(options = {})
click to toggle source
# File lib/mumuki/classroom/permissions_diff.rb, line 79 def as_json(options = {}) {changes: @changes}.as_json options end
changes_by_organization()
click to toggle source
# File lib/mumuki/classroom/permissions_diff.rb, line 51 def changes_by_organization changes.group_by(&:organization).with_indifferent_access end
compare_grants!(role, some_permissions, another_permissions, change_type)
click to toggle source
# File lib/mumuki/classroom/permissions_diff.rb, line 59 def compare_grants!(role, some_permissions, another_permissions, change_type) some_permissions .grants_for(role) .select { |grant| !another_permissions.role_allows?(role, grant) } .each { |grant| changes << Change.new(role, grant, change_type) } end
empty?()
click to toggle source
# File lib/mumuki/classroom/permissions_diff.rb, line 55 def empty? changes.empty? end