class Authorizy::Expander

Public Instance Methods

expand(permissions) click to toggle source
# File lib/authorizy/expander.rb, line 5
def expand(permissions)
  return [] if permissions.blank?

  result = {}

  permissions.each do |permission|
    controller = permission[0].to_s
    action = permission[1].to_s

    result["#{controller}##{action}"] = [controller, action]

    if (items = controller_dependency(controller, action))
      items.each do |controller_item, action_item|
        result["#{controller_item}##{action_item}"] = [controller_item, action_item]
      end
    end

    actions = [default_aliases[action]].flatten.compact

    next if actions.blank?

    actions.each do |action_item|
      result["#{controller}##{action_item}"] = [controller, action_item.to_s]
    end
  end

  result.values # TODO: garantir o uniq
end

Private Instance Methods

aliases() click to toggle source
# File lib/authorizy/expander.rb, line 36
def aliases
  Authorizy.config.aliases.stringify_keys
end
controller_dependency(controller, action) click to toggle source
# File lib/authorizy/expander.rb, line 40
def controller_dependency(controller, action)
  return if (actions = dependencies[controller]).blank?
  return if (permissions = actions[action]).blank?

  permissions.map { |c, a| [c.to_s, a.to_s] }
end
default_aliases() click to toggle source
# File lib/authorizy/expander.rb, line 47
def default_aliases
  {
    'create' => 'new',
    'edit'   => 'update',
    'new'    => 'create',
    'update' => 'edit',
  }.merge(aliases)
end
dependencies() click to toggle source
# File lib/authorizy/expander.rb, line 56
def dependencies
  Authorizy.config.dependencies.deep_stringify_keys
end