Module: IAmICan::Permission::Assignment
- Defined in:
- lib/i_am_i_can/permission/assignment.rb
Instance Method Summary collapse
- #_permissions_assignment(exec = :assign, actions, obj) ⇒ Object
- #can(*actions, resource: nil, obj: resource, _d: i_am_i_can.auto_definition, auto_definition: _d) ⇒ Object (also: #has_permission)
- #can_only(*actions, resource: nil, obj: resource) ⇒ Object
- #cannot(*actions, resource: nil, obj: resource) ⇒ Object (also: #is_not_allowed_to)
Instance Method Details
#_permissions_assignment(exec = :assign, actions, obj) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/i_am_i_can/permission/assignment.rb', line 30 def (exec = :assign, actions, obj) if actions.tap(&:flatten!).first.is_a?(i_am_i_can.) exec_arg, names = actions, actions.map(&:name) else objs = obj ? Array(obj) : [nil] = actions.product(objs).map { |(p, o)| { action: p, **deconstruct_obj(o) }.values } exec_arg = { action: .map(&:first).uniq, obj_type: .map { |v| v[1] }.uniq, obj_id: .map(&:last).uniq } names = .map { |pms| pms.compact.join('_').to_sym } end assignment = (exec, exec_arg) ResultOf. assignment, i_am_i_can, given: [[], names] end |
#can(*actions, resource: nil, obj: resource, _d: i_am_i_can.auto_definition, auto_definition: _d) ⇒ Object Also known as: has_permission
6 7 8 9 10 11 12 |
# File 'lib/i_am_i_can/permission/assignment.rb', line 6 def can *actions, resource: nil, obj: resource, _d: i_am_i_can.auto_definition, auto_definition: _d self.class. *actions, obj: obj if auto_definition run_callbacks(:permission_assign) do (actions, obj) end end |
#can_only(*actions, resource: nil, obj: resource) ⇒ Object
24 25 26 27 28 |
# File 'lib/i_am_i_can/permission/assignment.rb', line 24 def can_only *actions, resource: nil, obj: resource run_callbacks(:permission_update) do (:replace, actions, obj) end end |
#cannot(*actions, resource: nil, obj: resource) ⇒ Object Also known as: is_not_allowed_to
16 17 18 19 20 |
# File 'lib/i_am_i_can/permission/assignment.rb', line 16 def cannot *actions, resource: nil, obj: resource run_callbacks(:cancel_permission_assign) do (:cancel, actions, obj) end end |