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



15
16
17
18
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 15

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)


5
6
7
8
9
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 5

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!



36
37
38
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 36

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)


29
30
31
32
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 29

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



24
25
26
27
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 24

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)


20
21
22
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 20

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

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

Returns:

  • (Boolean)


11
12
13
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 11

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

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

Returns:

  • (Boolean)


51
52
53
54
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 51

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)


47
48
49
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 47

def stored_can? action, obj
  _roles._permissions.matched?(action, obj)
end

#temporarily_can?(action, obj) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
# File 'lib/i_am_i_can/subject/permission_querying.rb', line 42

def temporarily_can? action, obj
  return false if temporary_roles.blank?
  valid_temporary_roles._permissions.matched?(action, obj)
end