Class: Spud::SpudUserModel

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/spud/spud_user_model.rb

Direct Known Subclasses

SpudUser

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.where_name_like(string) ⇒ Object

Returns an ActiveRecord::Relation performing a LIKE query against name columns



90
91
92
93
# File 'app/models/spud/spud_user_model.rb', line 90

def self.where_name_like(string)
  like = '%' + string + '%'
  return self.where('login like ? or concat(`first_name`, " ", `last_name`) like ?', like, like)
end

.with_permission(tag, include_supers: true) ⇒ Object

Return an array of users who have the requested permission

  • tag - Desired permission tag string (required)

  • include_supers - Whether to include super user (default: true)



99
100
101
102
103
104
105
106
# File 'app/models/spud/spud_user_model.rb', line 99

def self.with_permission(tag, include_supers:true)
  role_ids = SpudRolePermission.where(:spud_permission_tag => tag).pluck(:spud_role_id).uniq()
  if include_supers
    return SpudUser.where('super_admin = 1 OR spud_role_id IN (?)', role_ids)
  else
    return SpudUser.where(:spud_role_id => role_ids)
  end
end

Instance Method Details

#can_view_app?(admin_application) ⇒ Boolean

Returns true if the user can view a spud app based on it’s key

Returns:

  • (Boolean)


46
47
48
49
50
51
52
53
# File 'app/models/spud/spud_user_model.rb', line 46

def can_view_app?(admin_application)
  if self.super_admin?
    return true
  else
    key = admin_application[:key]
    return self.permissions.find{ |p| p.apps.include?(key) }.present?
  end
end

#full_nameObject



24
25
26
27
28
29
30
31
32
33
34
# File 'app/models/spud/spud_user_model.rb', line 24

def full_name
  if first_name.blank? && last_name.blank?
    return self.
  end
  if self.first_name.blank?
    return self.last_name
  elsif self.last_name.blank?
    return self.first_name
  end
  return "#{self.first_name} #{self.last_name}"
end

#has_admin_rights?Boolean

Returns true if user can view at least one dashboard app

Returns:

  • (Boolean)


37
38
39
40
41
42
43
# File 'app/models/spud/spud_user_model.rb', line 37

def has_admin_rights?
  if self.super_admin?
    return true
  else
    return Spud::Core.admin_applications.find{ |app| self.can_view_app?(app) }.present?
  end
end

#has_any_permission?(*tags) ⇒ Boolean

Check if a user has at least one out of a given list of permissions

  • if one tag is supplied, return true if the tag matches

  • if multiple tags are supplied, return true if ANY tag matches

Returns:

  • (Boolean)


72
73
74
75
76
77
78
# File 'app/models/spud/spud_user_model.rb', line 72

def has_any_permission?(*tags)
  if self.super_admin?
    return true
  else
    return self.permissions.find{ |p| tags.include?(p.tag) }.present?
  end
end

#has_permission?(*tags) ⇒ Boolean

Check if a user has a given list of permissions

  • if one tag is supplied, return true if the tag matches

  • if multiple tags are supplied, return true if ALL tags match

Returns:

  • (Boolean)


59
60
61
62
63
64
65
66
# File 'app/models/spud/spud_user_model.rb', line 59

def has_permission?(*tags)
  if self.super_admin?
    return true
  else
    my_tags = self.permissions.collect(&:tag)
    return tags.find{ |tag| !my_tags.include?(tag) }.blank?
  end
end

#permissionsObject

Return a list of SpudPermission objects for the user’s SpudRole



81
82
83
84
85
86
87
# File 'app/models/spud/spud_user_model.rb', line 81

def permissions
  if !self.role
    return []
  else
    return self.role.permissions
  end
end