Class: UserPrivilege

Inherits:
ApplicationRecord show all
Includes:
HasOwner
Defined in:
app/models/user_privilege.rb

Class Method Summary collapse

Methods included from HasOwner

#owned_by?, #owner_name

Class Method Details

.ids(user) ⇒ Array<Integer>

Parameters:

Returns:

  • (Array<Integer>)


11
12
13
14
15
# File 'app/models/user_privilege.rb', line 11

def self.ids(user)
  privileges = user&.privileges
  return [] if privileges.blank?
  privileges.map(&:subbranch_ids).flatten.uniq
end

.user_has_any_privilege?(user, administrative = true) ⇒ Boolean

Parameters:

  • user (User)
  • administrative (TrueClass|FalseClass) (defaults to: true)

Returns:

  • (Boolean)


29
30
31
32
33
34
35
36
37
# File 'app/models/user_privilege.rb', line 29

def self.user_has_any_privilege?(user, administrative = true)
  return false if user.nil?
  return true if user.super_user?
  criteria = { user: user }
  if administrative
    criteria[:privilege_id] = Privilege.administrative.pluck(:id)
  end
  exists?(criteria)
end

.user_has_privilege?(user, privilege_name, region_ids = []) ⇒ Boolean

Parameters:

  • user (User)
  • privilege_name (String|Symbol)
  • region_ids (Array) (defaults to: [])

Returns:

  • (Boolean)


20
21
22
23
24
25
# File 'app/models/user_privilege.rb', line 20

def self.user_has_privilege?(user, privilege_name, region_ids = [])
  return false if user.nil?
  return true if user.super_user?
  privilege = Privilege.find_by(slug: privilege_name)
  privilege&.has_user?(user, region_ids)
end

.user_in_group?(user, group_name) ⇒ Boolean

Parameters:

  • user (User)
  • group_name (Symbol)

Returns:

  • (Boolean)


41
42
43
44
45
46
47
# File 'app/models/user_privilege.rb', line 41

def self.user_in_group?(user, group_name)
  return false if user.nil?
  return true if user.super_user?
  privilege_ids = PrivilegeGroup.ids(group_name)
  return false if privilege_ids.blank?
  exists?(user: user, privilege_id: privilege_ids)
end