Class: Tuersteher::AccessRules
- Inherits:
-
Object
- Object
- Tuersteher::AccessRules
- Defined in:
- lib/tuersteher.rb
Class Method Summary collapse
-
.model_access?(login_context, model, permission) ⇒ Boolean
Pruefen Zugriff auf ein Model-Object.
-
.path_access?(login_context, path, method = :get) ⇒ Boolean
Pruefen Zugriff fuer eine Web-action.
-
.purge_collection(login_context, collection, permission) ⇒ Object
Bereinigen (entfernen) aller Objecte aus der angebenen Collection, wo der angegebene login_context nicht das angegebene Recht hat.
Class Method Details
.model_access?(login_context, model, permission) ⇒ Boolean
Pruefen Zugriff auf ein Model-Object
liefert true/false
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 |
# File 'lib/tuersteher.rb', line 225 def model_access? login_context, model, raise "Wrong call! Use: model_access(model-instance-or-class, permission)" unless .is_a? Symbol return false unless model rule = AccessRulesStorage.instance.model_rules.detect do |rule| rule.fired? model, , login_context end access = rule && !rule.deny? if Tuersteher::TLogger.logger.debug? lc_id = login_context && login_context.respond_to?(:id) ? login_context.id : login_context.object_id if model.instance_of?(Class) Tuersteher::TLogger.logger.debug( "Tuersteher: model_access?(login_context.id=#{lc_id}, model=#{model}, permission=#{}) => #{access || 'denied'} #{rule}") else Tuersteher::TLogger.logger.debug( "Tuersteher: model_access?(login_context.id=#{lc_id}, model=#{model.class}(#{model.respond_to?(:id) ? model.id : model.object_id }), permission=#{}) => #{access || 'denied'} #{rule}") end end access end |
.path_access?(login_context, path, method = :get) ⇒ Boolean
Pruefen Zugriff fuer eine Web-action
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/tuersteher.rb', line 201 def path_access?(login_context, path, method = :get) rule = AccessRulesStorage.instance.path_rules.detect do |r| r.fired?(path, method, login_context) end if Tuersteher::TLogger.logger.debug? if rule.nil? s = 'denied' else s = "fired with #{rule}" end lc_id = login_context && login_context.respond_to?(:id) ? login_context.id : login_context.object_id Tuersteher::TLogger.logger.debug("Tuersteher: path_access?(login_context.id=#{lc_id}, path=#{path}, method=#{method}) => #{s}") end !(rule.nil? || rule.deny?) end |
.purge_collection(login_context, collection, permission) ⇒ Object
Bereinigen (entfernen) aller Objecte aus der angebenen Collection, wo der angegebene login_context nicht das angegebene Recht hat
liefert ein neues Array mit den Objecten, wo der spez. Zugriff arlaubt ist
250 251 252 |
# File 'lib/tuersteher.rb', line 250 def purge_collection login_context, collection, collection.select{|model| model_access?(login_context, model, )} end |