Module: Concentric::Model::ClassMethods
- Defined in:
- lib/kojac/concentric.rb
Instance Method Summary collapse
-
#allow(aRing, aAbilities) ⇒ Object
supports different formats : allow :sales, :write => [:name,:address] ie.
-
#allowed?(aRing, aAbility, aFields = nil) ⇒ Boolean
Query aFields specifies fields you require to act on This is no longer used by KojacBasePolicy because it does not observe its filters that operate on fields.
-
#permitted(aRing, aAbility) ⇒ Object
returns properties that this ring can use this ability on.
-
#ring(aRing, aAbilities) ⇒ Object
deprecated.
-
#ring_can?(aRing, aAbility, aFields = nil) ⇒ Boolean
deprecated.
Instance Method Details
#allow(aRing, aAbilities) ⇒ Object
supports different formats : allow :sales, :write => [:name,:address] ie. sales can write the name and address fields allow :sales, :read ie. sales can read this model allow :sales, [:read, :create, :destroy] ie. sales can read, create and destroy this model
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/kojac/concentric.rb', line 93 def allow(aRing,aAbilities) #aRing.each {|r| ring(r,aAbilities)} and return if aRing.is_a? Array shouldn't need this because of ring system aRing = Concentric.lookup_ring(aRing) raise "aRing must be a number or a symbol defined in Concentric.config.ring_names" if !aRing.is_a?(Fixnum) raise "aAbilities must be a Hash" unless aAbilities.is_a? Hash # eg. :write => [:name,:address] ring_rec = self.rings_abilities[aRing] aAbilities.each do |abilities, fields| abilities = [abilities] unless abilities.is_a?(Array) fields = [fields] unless fields.is_a?(Array) next if fields.empty? abilities.each do |a| a = a.to_sym ring_rec ||= {} if fields==[:this] ring_rec[a] = true unless ring_rec[a].to_nil else ring_fields = ring_rec[a] ring_fields = [] unless ring_fields.is_a? Array ring_fields = ring_fields + fields.map(&:to_sym) ring_fields.uniq! ring_fields.sort! ring_rec[a] = ring_fields end end self.rings_abilities[aRing] = ring_rec end end |
#allowed?(aRing, aAbility, aFields = nil) ⇒ Boolean
Query aFields specifies fields you require to act on This is no longer used by KojacBasePolicy because it does not observe its filters that operate on fields. It may still provide a faster check when there are no filters applied
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/kojac/concentric.rb', line 151 def allowed?(aRing,aAbility,aFields=nil) if aFields pf = permitted(aRing,aAbility) if aFields.is_a? Array return (aFields - pf).empty? else return pf.include? aFields end end aRing = Concentric.lookup_ring(aRing) return [] unless aRing and rings_abilities = self.respond_to?(:rings_abilities).to_nil && self.rings_abilities ring_keys = rings_abilities.keys.sort ring_keys.each do |i| next unless i >= aRing next unless ring_rec = rings_abilities[i] return true if ring_rec[aAbility.to_sym].to_nil end return false end |
#permitted(aRing, aAbility) ⇒ Object
returns properties that this ring can use this ability on
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/kojac/concentric.rb', line 128 def permitted(aRing,aAbility) aRing = Concentric.lookup_ring(aRing) raise "aRing must be a number or a symbol defined in Concentric.config.ring_names" if !aRing.is_a?(Fixnum) return [] unless aRing and rings_abilities = self.respond_to?(:rings_abilities) && self.rings_abilities.to_nil fields = [] ring_keys = rings_abilities.keys.sort ring_keys.each do |i| next unless i >= aRing next unless ring_rec = rings_abilities[i] if af = ring_rec[aAbility.to_sym] next if af==true fields += af if af.is_a?(Array) end end fields.uniq! fields.sort! fields end |
#ring(aRing, aAbilities) ⇒ Object
deprecated
123 124 125 |
# File 'lib/kojac/concentric.rb', line 123 def ring(aRing,aAbilities) allow(aRing,aAbilities) end |
#ring_can?(aRing, aAbility, aFields = nil) ⇒ Boolean
deprecated
174 175 176 |
# File 'lib/kojac/concentric.rb', line 174 def ring_can?(aRing,aAbility,aFields=nil) allowed?(aRing,aAbility,aFields) end |