class ActAsPermissionControllable::Controller

Public Class Methods

get_controllers(sorted: false) click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 31
def self.get_controllers(sorted: false)
  self.preload_controller.call if Proc === self.preload_controller

  controllers = self.permission_controllable_controllers.map { |controller, _|
    self.new(controller)
  }.select(&:controllable?)

  if sorted
    order = I18n.t('act_as_permission_controllable.order', default: [[]])
    controllers = controllers.sort_by(&:controller_name).sort_by.with_index { |controller, i|
      [ order.index(controller.to_s) || order.size, i ]
    }
  end

  controllers
end
new(controller) click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 48
def initialize(controller)
  @controller = case controller
                when Symbol then controller.to_s.safe_constantize
                when String then controller.safe_constantize
                else controller
                end
  @data = self.class.permission_controllable_controllers[@controller.to_s]
end
remove(controller) click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 24
def self.remove(controller)
  if self.permission_controllable_controllers[controller.to_s]
    self.permission_controllable_controllers.delete(controller.to_s)
    controller.skip_authorize_resource # cancancan
  end
end
set(controller, options) click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 17
def self.set(controller, options)
  if !self.permission_controllable_controllers[controller.to_s]
    controller.authorize_resource(class: false) # cancancan
  end
  self.permission_controllable_controllers[controller.to_s] = options
end

Public Instance Methods

actions() click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 82
def actions
  Action.actions_for_controller(@controller)
end
controllable?() click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 61
def controllable?
  !!@data && actions.present?
end
controller_name() click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 65
def controller_name
  @controller.controller_name
end
i18n_name() click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 73
def i18n_name
  name = controller_name.singularize
  defaults = [
    :"activerecord.models.#{name}",
    name.camelize,
  ]
  I18n.translate(:"act_as_permission_controllable.controllers.#{to_s}", default: defaults)
end
index() click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 86
def index
  @data[:index].presence || :index
end
nil?() click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 57
def nil?
  @controller.nil?
end
to_s() click to toggle source
# File lib/act_as_permission_controllable/controller.rb, line 69
def to_s
  @controller.to_s
end