Sha256: 1068e5a63699dfbd78c2fafe45f1dbefc4879aae4a82d6fc7861c4e2d28a74c3

Contents?: true

Size: 1.05 KB

Versions: 3

Compression:

Stored size: 1.05 KB

Contents

module ActionAccess
  module UserUtilities
    # Check if the user is authorized to perform a given action.
    #
    # Resource can be either plural or singular.
    #
    # == Examples:
    #   user.can? :show, :articles
    #   user.can? :show, @article
    #   user.can? :show, ArticlesController
    #   # True if the user's clearance level allows to access 'articles#show'
    #
    #   user.can? :edit, :articles, namespace: :admin
    #   user.can? :edit, @admin_article
    #   user.can? :edit, Admin::ArticlesController
    #   # True if the user's clearance level allows to access 'admin/articles#edit'
    #
    def can?(action, resource, options = {})
      keeper = ActionAccess::Keeper.instance
      keeper.lets? clearance_level, action, resource, options
    end


    private

      # Accessor for the user's clearance level.
      #
      # Must be overridden to set the proper clearance level.
      #
      # == Example:
      #   def clearance_level
      #     role.name
      #   end
      #
      def clearance_level
        :guest
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
action_access-0.0.3 lib/action_access/user_utilities.rb
action_access-0.0.2 lib/action_access/user_utilities.rb
action_access-0.0.1 lib/action_access/user_utilities.rb