Class: Acl

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
RubyLess, Zena::Acts::Secure
Defined in:
app/models/acl.rb

Constant Summary collapse

ACTIONS =

List of access actions, ordered for their use in the form.

%w{read update create delete}
ACTION_FROM_METHOD =
Hash[:get,'read',:put,'update',:post,'create',:delete,'delete']

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Zena::Acts::Secure

#secure_scope, #secure_write_scope, #visitor=

Methods included from Zena::Acts::Secure::SecureResult

#construct_id_map, #secure_result

Instance Attribute Details

#nodeObject (readonly)

Used during script compilation



3
4
5
# File 'app/models/acl.rb', line 3

def node
  @node
end

#paramsObject (readonly)

Used during script compilation



3
4
5
# File 'app/models/acl.rb', line 3

def params
  @params
end

Instance Method Details

#authorize?(base_node, params, request) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
34
35
36
37
38
# File 'app/models/acl.rb', line 31

def authorize?(base_node, params, request)
  res = Node.find_by_sql(eval(make_query(base_node, params, request).to_s)) rescue nil
  if res.empty?
    nil
  else
    secure_result(res.first)
  end
end

#create_vclass_nameObject



53
54
55
56
57
58
59
60
61
62
63
# File 'app/models/acl.rb', line 53

def create_vclass_name
  if create_kpath
    if klass = VirtualClass.find_by_kpath(create_kpath)
      klass.name
    else
      create_kpath
    end
  else
    'Node'
  end
end

#exec_skinObject



44
45
46
# File 'app/models/acl.rb', line 44

def exec_skin
  @exec_skin ||= secure(Skin) { Skin.find(exec_skin_id) }
end

#exec_skin_zipObject



40
41
42
# File 'app/models/acl.rb', line 40

def exec_skin_zip
  exec_skin ? exec_skin.zip : nil
end

#safe_method_type(signature, receiver = nil) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'app/models/acl.rb', line 21

def safe_method_type(signature, receiver = nil)
  if type = super
    type
  elsif type = node.safe_method_type(signature)
    type.merge(:method => "@node.#{type[:method]}")
  else
    nil
  end
end

#visitorObject

Make visitor public so that we can use ‘visitor’ in queries.



49
50
51
# File 'app/models/acl.rb', line 49

def visitor
  super
end