Sha256: 8a64c2b54eb5b89656ffe6750c3eff75da6e3ee6bcadada013bf9d7cd5e5924a

Contents?: true

Size: 1.34 KB

Versions: 14

Compression:

Stored size: 1.34 KB

Contents

module FlexibleAccessibility
  module ControllerMethods
  	module ClassMethods

      # Macro for skip authorization
      def skip_authorization_here
        self.instance_variable_set :@_route_permitted, true
        self.instance_variable_set :@_checkable_routes, []
      end

      # Macro for define authorization
  	  def authorize args={}
        self.instance_variable_set :@_route_permitted, false
        set_actions_to_authorize args
  	  end
      
      private
      # Set actions for authorize as instance variable
      def set_actions_to_authorize args={}
        self.instance_variable_set :@_checkable_routes, args[:only] unless args[:only].nil?
        # TODO: understand and fix it
        self.instance_variable_set :@_checkable_routes, self.action_methods - args[:except] unless args[:except].nil?  
      end
    end
 
    # Callback needs for include methods and define helper method
    def self.included base
      base.extend ClassMethods
      base.helper_method :has_access?
    end
    
    # We checks url for each link in view to show it
    def has_access? permission, user
      Permission.is_action_permitted_for_user? permission, user
    end
  end
end

# We include methods in ActionController::Base
if defined? ActionController::Base
	ActionController::Base.class_eval do
	  include FlexibleAccessibility::ControllerMethods	
	end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
flexible_accessibility-0.2.99.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.98.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.97.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.96.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.95.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.9.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.8.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.7.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.6.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.4.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.3.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.1.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.2.0.pre lib/flexible_accessibility/controller_methods.rb
flexible_accessibility-0.1.95.pre lib/flexible_accessibility/controller_methods.rb