Sha256: 80d8470ffbb7a7849b3ddcb3d1125f4a02175ebb3b3f8e45de750116e3a1f5dc

Contents?: true

Size: 685 Bytes

Versions: 4

Compression:

Stored size: 685 Bytes

Contents

module Deny
  extend ActiveSupport::Concern

  # es.
  # 
  # deny! :if => user.logged_in?
  # deny! :if => -> { ... }
  # deny!
  #
  # before_filter :deny! :if => :guest?
  #
  # def guest?
  #   !current_user
  # end
  
  def deny!(options = {})
    negate = false
    expr = options.has_key?(:if)
      options.delete(:if)
    elsif options.has_key?(:unless)
      negate = true
      options.delete(:unless)
    else
      true
    end

    condition = if expr.is_a?(Proc)
      expr.arity != 0 ? expr.call(self) : expr.call
    else
      expr
    end
    condition = negate ? !condition : condition
  
    if condition
      raise DeniedError.new
    end
 
    false
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
fullstack-cms-0.3.14 app/support/deny.rb
fullstack-cms-0.3.13 app/support/deny.rb
fullstack-cms-0.3.12 app/support/deny.rb
fullstack-cms-0.3.11 app/support/deny.rb