Method: DoRole::PermissionSet#permission

Defined in:
lib/do_role/permission_set.rb

#permission(name, options = {}, &block) ⇒ Object

Raises:

  • (ArgumentError)


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/do_role/permission_set.rb', line 30

def permission(name, options = {}, &block)
  name = name.to_s
  raise ArgumentError, "name can't be blank" if name.blank?
  
  conditions = if block_given?
    ConditionsProxy.new({}).tap { |proxy| proxy.instance_eval(&block) }.conditions
  else
    non_reserved_options = options.except(*RESERVED_OPTIONS)
    options.except!(*non_reserved_options.keys)
    non_reserved_options
  end

  options.reverse_merge!(
    conditions: conditions,
    priority: 0,
    description: "",
    requires: Array.wrap(options[:requires]).map(&:to_s)
  )
  
  register_permission(name, options)
end