module IAmICan::Permission::Definition
Public Class Methods
extended(kls)
click to toggle source
# File lib/i_am_i_can/permission/definition.rb, line 20 def self.extended(kls) kls.delegate :deconstruct_obj, to: kls end
Public Instance Methods
deconstruct_obj(obj)
click to toggle source
# File lib/i_am_i_can/permission/definition.rb, line 16 def deconstruct_obj(obj) i_am_i_can.permission_model.deconstruct_obj(obj) end
have_permission(*actions, obj: nil, remarks: nil)
click to toggle source
# File lib/i_am_i_can/permission/definition.rb, line 6 def have_permission *actions, obj: nil, remarks: nil return unless actions.tap(&:flatten!).first.class.in?([ Symbol, String ]) objs = obj ? Array(obj) : [nil] permissions = actions.product(objs).map { |(p, o)| { action: p, **deconstruct_obj(o), remarks: remarks } } definition = _create_permissions(permissions) ResultOf.permissions definition, i_am_i_can, given: permissions.map { |pms| pms.values.compact.join('_').to_sym } end
Also aliased as: aname