class ActionPermission::Dispatch
Attributes
membership[RW]
permissions[RW]
Public Class Methods
new(membership)
click to toggle source
# File lib/action_permission/dispatch.rb, line 9 def initialize(membership) @membership = membership @permissions = HashWithIndifferentAccess.new end
Public Instance Methods
allow?(controller, action, resource = nil)
click to toggle source
# File lib/action_permission/dispatch.rb, line 14 def allow?(controller, action, resource = nil) current_permission = load_permission controller if resource current_permission.allow?(action, resource) else !resource current_permission.allow?(action) end end
allow_param?(resource, attribute)
click to toggle source
# File lib/action_permission/dispatch.rb, line 37 def allow_param?(resource, attribute) current_permission = load_permission resource.to_s.pluralize if current_permission && current_permission.allowed_params current_permission.allowed_params.include? attribute else false end end
allowed_params_for(resource, params, controller=nil)
click to toggle source
‘book/review’, params #=> controller == ‘books/reviews’ ‘book/review’, params, ‘reviews’ #=> controller == ‘reviews’
# File lib/action_permission/dispatch.rb, line 26 def allowed_params_for(resource, params, controller=nil) controller = set_controller(resource, controller) resource = set_resource(resource) current_permission = load_permission(controller) if current_permission && current_permission.allowed_params params.require(resource).permit *current_permission.allowed_params end end
Private Instance Methods
get_class_name(controller)
click to toggle source
# File lib/action_permission/dispatch.rb, line 85 def get_class_name(controller) controller = controller.to_s return (controller.pluralize + "_permissions").classify.constantize end
load_permission(controller)
click to toggle source
# File lib/action_permission/dispatch.rb, line 79 def load_permission(controller) klass = get_class_name(controller) # grab the permissions for this controller from cache or register it if missing @permissions[controller] ||= register_permission(controller, klass) end
register_permission(controller, klass)
click to toggle source
# File lib/action_permission/dispatch.rb, line 90 def register_permission(controller, klass) @permissions[controller] = klass.new(@membership) end
set_controller(resource, controller)
click to toggle source
# File lib/action_permission/dispatch.rb, line 49 def set_controller(resource, controller) if controller case controller when String, Symbol controller.to_s.pluralize else (controller.is_a?(Class) ? controller : controller.class). name.underscore.gsub('_controller', '') end else case resource when String, Symbol resource.to_s else (resource.is_a?(Class) ? resource : resource.class). name.underscore end. split('/').map(&:pluralize).join('/') end end
set_resource(resource)
click to toggle source
# File lib/action_permission/dispatch.rb, line 70 def set_resource(resource) case resource when String, Symbol resource.to_s.parameterize("_") else (resource.is_a?(Class) ? resource : resource.class).model_name.param_key end end