Sha256: 1585635eff176d6682b90cd370545c842573d193764ab82d37ceac5c1c4f2631

Contents?: true

Size: 1.2 KB

Versions: 5

Compression:

Stored size: 1.2 KB

Contents

module RestfulAclHelper
  def indexable
    return true if admin_enabled
    klass.is_indexable_by(current_user, parent_obj)
  end

  def creatable
    return true if admin_enabled
    klass.is_creatable_by(current_user, parent_obj)
  end
  alias_method :createable, :creatable


  def updatable(object)
    return true if admin_enabled

    parent = object.get_mom rescue nil
    object.is_updatable_by(current_user, parent)
  end
  alias_method :updateable, :updatable


  def deletable(object)
    return true if admin_enabled

    parent = object.get_mom rescue nil
    object.is_deletable_by(current_user, parent)
  end
  alias_method :deleteable, :deletable


  def readable(object)
    return true if admin_enabled

    parent = object.get_mom rescue nil
    object.is_readable_by(current_user, parent)
  end


  private

    def klass
      params[:controller].classify.demodulize.constantize
    end

    def parent_obj
      parent_klass.find(parent_id) rescue nil
    end

    def parent_klass
      klass.parent.to_s.classify.constantize
    end

    def parent_id
      params["#{klass.parent.to_s}_id"]
    end

    def admin_enabled
      current_user.respond_to?("is_admin?") && current_user.is_admin?
    end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
restful_acl-2.1.3 lib/restful_acl/helper.rb
restful_acl-2.1.2 lib/helper.rb
restful_acl-2.1.1 lib/helper.rb
restful_acl-2.1.0 lib/helper.rb
restful_acl-2.1 lib/helper.rb