Sha256: f805ab6cd947fe06cbd36e7a097fc8fdbe5a949fefbc1f35676688b645d99650
Contents?: true
Size: 1.92 KB
Versions: 1
Compression:
Stored size: 1.92 KB
Contents
module FlexibleAccessibility module Filters extend ActiveSupport::Concern included do append_before_filter(:check_permission_to_route) append_before_filter(:check_if_route_is_permitted) end private # Detect current controller and action and return a permission def current_resource # ActionController::Routing::Routes.recognize_path request.env["PATH_INFO"][:controller] params[:controller] end def current_action # ActionController::Routing::Routes.recognize_path request.env["PATH_INFO"][:action] params[:action] end def current_route "#{current_resource}##{current_action}" end # Expected the existing of current_user helper def logged_user return current_user if defined?(current_user) raise NoWayToDetectLoggerUserException unless defined?(current_user) end # Check access to route and we expected the existing of current_user helper def check_permission_to_route route_provider = RouteProvider.new(self.class) if route_provider.verifiable_routes_list.include?(current_action) raise UserNotLoggedInException.new(current_route, nil) if logged_user.nil? AccessProvider.is_action_permitted_for_user?(current_route, logged_user) ? allow_route : deny_route elsif route_provider.non_verifiable_routes_list.include?(current_action) allow_route else deny_route end end def allow_route self.class.instance_variable_set(:@_route_permitted, true) end def deny_route self.class.instance_variable_set(:@_route_permitted, false) end # Check the @_route_permitted variable state def check_if_route_is_permitted raise AccessDeniedException.new(current_route, nil) unless self.class.instance_variable_get(:@_route_permitted) end end ActiveSupport.on_load(:action_controller) do ActionController::Base.send(:include, Filters) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
flexible_accessibility-0.3.16 | lib/flexible_accessibility/filters.rb |