class Ddr::Auth::Roles::RoleSetManager

Attributes

object[R]
role_set[RW]

Public Class Methods

new(object) click to toggle source
# File lib/ddr/auth/roles/role_set_manager.rb, line 8
def initialize(object)
  @object = object
  load
end

Public Instance Methods

grant(*roles) click to toggle source
# File lib/ddr/auth/roles/role_set_manager.rb, line 13
def grant(*roles)
  granted = RoleSet.new(roles: roles)
  role_set.merge(granted)
  persist
end
granted?(role) click to toggle source
# File lib/ddr/auth/roles/role_set_manager.rb, line 19
def granted?(role)
  if role.is_a?(Role)
    role_set.include?(role)
  else
    granted? Role.new(role)
  end
end
replace(*roles) click to toggle source
# File lib/ddr/auth/roles/role_set_manager.rb, line 38
def replace(*roles)
  self.role_set = RoleSet.new(roles: roles)
  persist
end
revoke(*roles) click to toggle source
# File lib/ddr/auth/roles/role_set_manager.rb, line 27
def revoke(*roles)
  revoked = RoleSet.new(roles: roles)
  role_set.roles -= revoked.roles
  persist
end
revoke_all() click to toggle source
# File lib/ddr/auth/roles/role_set_manager.rb, line 33
def revoke_all
  role_set.clear
  persist
end

Protected Instance Methods

method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/ddr/auth/roles/role_set_manager.rb, line 49
def method_missing(name, *args, &block)
  if role_set.respond_to?(name)
    return role_set.send(name, *args, &block)
  end
  super
end
respond_to_missing?(name, include_all=false) click to toggle source
# File lib/ddr/auth/roles/role_set_manager.rb, line 45
def respond_to_missing?(name, include_all=false)
  role_set.respond_to?(name, include_all)
end

Private Instance Methods

load() click to toggle source
# File lib/ddr/auth/roles/role_set_manager.rb, line 62
def load
  self.role_set = RoleSet.from_json(object.access_roles)
end
persist() click to toggle source
# File lib/ddr/auth/roles/role_set_manager.rb, line 58
def persist
  object.access_roles = role_set.to_json
end