Module: IAmICan::Subject::PermissionQuerying

Defined in:
lib/i_am_i_can/subject/permission_querying.rb

Instance Method Summary collapse

Instance Method Details

#can!(action, o = nil, obj: o) ⇒ Object



17
18
19
20
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 17

def can! action, o = nil, obj: o
  raise InsufficientPermission if cannot? action, obj
  true
end

#can?(action, o = nil, obj: o, without_group: false) ⇒ Boolean

TODO: without: :group

Returns:

  • (Boolean)


7
8
9
10
11
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 7

def can? action, o = nil, obj: o, without_group: false
  temporarily_can?(action, obj) ||
      stored_can?(action, obj) ||
      group_can?(action, obj, without_group)
end

#can_each!(actions, o = nil, obj: o) ⇒ Object Also known as: can_every!



38
39
40
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 38

def can_each! actions, o = nil, obj: o
  actions.each { |action| can! action, obj } && true
end

#can_each?(actions, o = nil, obj: o) ⇒ Boolean Also known as: can_every?

Returns:

  • (Boolean)


31
32
33
34
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 31

def can_each? actions, o = nil, obj: o
  # TODO: using `matched_all?`
  actions.each { |action| return false if cannot? action, obj } && true
end

#can_one_of!(actions, o = nil, obj: o) ⇒ Object



26
27
28
29
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 26

def can_one_of! actions, o = nil, obj: o
  raise InsufficientPermission unless can_one_of? actions, obj
  true
end

#can_one_of?(actions, o = nil, obj: o) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 22

def can_one_of? actions, o = nil, obj: o
  can? actions, obj
end

#cannot?(action, o = nil, obj: o) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 13

def cannot? action, o = nil, obj: o
  !can? action, obj
end

#group_can?(action, obj, without_group = false) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
56
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 53

def group_can? action, obj, without_group = false
  return false if without_group || i_am_i_can.without_group
  _roles._role_groups._permissions.matched?(action, obj)
end

#stored_can?(action, obj) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 49

def stored_can? action, obj
  _roles.can?(action, obj)
end

#temporarily_can?(action, obj) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
47
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 44

def temporarily_can? action, obj
  return false if try(:temporary_roles).blank?
  valid_temporary_roles.can?(action, obj)
end