Sha256: 7178ed6cf20b9032590f4c54df58e77dc43c1999ae1028e7e6742f10eeeb78fa

Contents?: true

Size: 733 Bytes

Versions: 6

Compression:

Stored size: 733 Bytes

Contents

# Main class for all the **Faalis** Policy classes.
# It's totally a minimume Policy.
class Faalis::ApplicationPolicy
  attr_reader :user, :record

  def initialize(user, record)
    @user = user
    @record = record
  end

  def authorize?(action)
    return false if @user.nil?
    return true if @user.admin?

    @user.have_permission? action, @record.class.to_s
  end

  def method_missing(m, *args, &block_given)
    return authorize? m.to_s[0..-2] if m.to_s =~ /.*\?$/
    super
  end


  def scope
    Pundit.policy_scope!(@user, record.class)
  end

  class Scope
    attr_reader :user, :scope

    def initialize(user, scope)
      @@user = @user
      @scope = scope
    end

    def resolve
      scope
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
faalis-2.0.0.rc3 app/policies/faalis/application_policy.rb
faalis-2.0.0.rc2 app/policies/faalis/application_policy.rb
faalis-1.0.0 app/policies/faalis/application_policy.rb
faalis-1.0.0.alpha4 app/policies/faalis/application_policy.rb
faalis-1.0.0.alpha3 app/policies/faalis/application_policy.rb
faalis-1.0.0.alpha2 app/policies/faalis/application_policy.rb