module Seven::Rails::ControllerHelpers

Public Class Methods

included(cls) click to toggle source

reuqire methods

current_user
abilities_manager
ability_check_callback
# File lib/seven/rails/controller_helpers.rb, line 9
def self.included(cls)
  cls.extend(ClassMethods)
end

Public Instance Methods

can?(ability, target = nil) click to toggle source
# File lib/seven/rails/controller_helpers.rb, line 13
def can?(ability, target = nil)
  abilities_manager.can?(current_user, ability, target)
end
seven_ability_check_filter() click to toggle source
# File lib/seven/rails/controller_helpers.rb, line 17
def seven_ability_check_filter
  current_action_name = action_name.to_sym
  action_checker = self.class.seven_ability_checker[current_action_name]

  if action_checker
    target = seven_fetch_target(action_checker[:target])

    result = can?(action_checker[:ability], target)
    ability_check_callback(result, action_checker[:ability], target)
  else
    ability_check_callback(false, nil, nil)
  end
end
seven_fetch_target(target_list) click to toggle source
# File lib/seven/rails/controller_helpers.rb, line 31
def seven_fetch_target(target_list)
  return if target_list.empty?

  target_list.each do |t|
    case t
    when Symbol, String
      instance = instance_variable_defined?(t) ? instance_variable_get(t) : nil
      return instance if instance
    when Proc
      result = instance_eval(&t)
      return result if result
    else
      return t
    end
  end

  return nil
end