Class: Tuersteher::AccessRules

Inherits:
Object
  • Object
show all
Defined in:
lib/tuersteher.rb

Class Method Summary collapse

Class Method Details

.model_access?(login_context, model, permission) ⇒ Boolean

Pruefen Zugriff auf ein Model-Object

liefert true/false

Parameters:

  • login_context

    Login-Contex, für den der Zugriff geprüft werden soll (muss Methode has_role? haben)

  • model

    das Model-Object

  • permission

    das geforderte Zugriffsrecht (:create, :update, :destroy, :get)

Returns:

  • (Boolean)


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? , 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, 
  end
  access = rule && !rule.deny?
  if Tuersteher::TLogger.logger.debug?
    lc_id =  && .respond_to?(:id) ? .id : .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

.path_access?(login_context, path, method = :get) ⇒ Boolean

Pruefen Zugriff fuer eine Web-action

Parameters:

  • login_context

    Login-Contex, für den der Zugriff geprüft werden soll (muss Methode has_role? haben)

  • path

    Pfad der Webresource (String)

  • method (defaults to: :get)

    http-Methode (:get, :put, :delete, :post), default ist :get

Returns:

  • (Boolean)


201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
# File 'lib/tuersteher.rb', line 201

def path_access?(, path, method = :get)
  rule = AccessRulesStorage.instance.path_rules.detect do |r|
    r.fired?(path, method, )
  end
  if Tuersteher::TLogger.logger.debug?
    if rule.nil?
      s = 'denied'
    else
      s = "fired with #{rule}"
    end
    lc_id =  && .respond_to?(:id) ? .id : .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 , collection, permission
  collection.select{|model| model_access?(, model, permission)}
end