Class: Spud::SpudUserModel
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Spud::SpudUserModel
- Defined in:
- app/models/spud/spud_user_model.rb
Direct Known Subclasses
Class Method Summary collapse
-
.where_name_like(string) ⇒ Object
Returns an ActiveRecord::Relation performing a LIKE query against name columns.
-
.with_permission(tag, include_supers: true) ⇒ Object
Return an array of users who have the requested permission.
Instance Method Summary collapse
-
#can_view_app?(admin_application) ⇒ Boolean
Returns true if the user can view a spud app based on it’s key.
- #full_name ⇒ Object
-
#has_admin_rights? ⇒ Boolean
Returns true if user can view at least one dashboard app.
-
#has_any_permission?(*tags) ⇒ Boolean
Check if a user has at least one out of a given list of permissions.
-
#has_permission?(*tags) ⇒ Boolean
Check if a user has a given list of permissions.
-
#permissions ⇒ Object
Return a list of SpudPermission objects for the user’s SpudRole.
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.(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
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..find{ |p| p.apps.include?(key) }.present? end end |
#full_name ⇒ Object
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.login 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
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
72 73 74 75 76 77 78 |
# File 'app/models/spud/spud_user_model.rb', line 72 def (*) if self.super_admin? return true else return self..find{ |p| .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
59 60 61 62 63 64 65 66 |
# File 'app/models/spud/spud_user_model.rb', line 59 def (*) if self.super_admin? return true else = self..collect(&:tag) return .find{ |tag| !.include?(tag) }.blank? end end |
#permissions ⇒ Object
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 if !self.role return [] else return self.role. end end |