module Governor module Controllers #:nodoc: module Helpers # Represents the article for this session. Can also be accessed as an # instance variable, for example @article if the Mapping # class is Article. def resource instance_variable_get("@#{mapping.singular}") end # Returns a symbol representation of this resource, for example # :article if the Mapping class is Article. def resource_sym mapping.singular end # Returns the list of articles for this session. Can also be accessed as # an instance variable, for example @articles if the # Mapping class is Article. def resources instance_variable_get("@#{mapping.plural}") end # Returns the Mapping model class, for example: Article. def model_class @model_class ||= mapping.to end private def set_resources(resources) instance_variable_set("@#{mapping.plural}", resources) end def set_resource(resource) instance_variable_set("@#{mapping.singular}", resource) end def mapping Governor.resources[params[:governor_mapping]] end def init_resource set_resource model_class.find(params["#{mapping.singular}_id"] || params[:id]) end def the_governor instance_eval(&Governor.author) end def governor_logged_in? the_governor.present? end def authorize_governor! if defined?(resource) redirect_to root_path unless governor_authorized?(action_name, resource) else instance_eval(&Governor.if_not_allowed) unless governor_authorized?(action_name) end end def governor_authorized?(action, article=nil) instance_exec(action, article, &Governor.authorization_rules) end end end end