class Tuersteher::AccessRules
Public Class Methods
Pruefen Zugriff auf ein Model-Object
@param login_context Login-Contex, für den der Zugriff geprüft werden soll (muss Methode has_role? haben) @param model das Model-Object @param permission das geforderte Zugriffsrecht (:create, :update, :destroy, :get)
liefert true/false
# File lib/tuersteher.rb, line 225 def model_access? login_context, model, permission raise "Wrong call! Use: model_access(model-instance-or-class, permission)" unless permission.is_a? Symbol return false unless model rule = AccessRulesStorage.instance.model_rules.detect do |rule| rule.fired? model, permission, 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=#{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=#{permission}) => #{access || 'denied'} #{rule}") end end access end
Pruefen Zugriff fuer eine Web-action @param login_context Login-Contex, für den der Zugriff geprüft werden soll (muss Methode has_role? haben) @param path Pfad der Webresource (String) @param method http-Methode (:get, :put, :delete, :post), default ist :get
# 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
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
# File lib/tuersteher.rb, line 250 def purge_collection login_context, collection, permission collection.select{|model| model_access?(login_context, model, permission)} end