Module: Roleable
Instance Method Summary collapse
- #grant_admin! ⇒ Object
- #grant_moderation! ⇒ Object
- #regular? ⇒ Boolean
- #reload(options = nil) ⇒ Object
- #revoke_admin! ⇒ Object
- #revoke_moderation! ⇒ Object
- #save_and_refresh_staff_groups! ⇒ Object
- #set_default_notification_levels(group_name) ⇒ Object
- #set_permission(permission_name, value) ⇒ Object
-
#staff? ⇒ Boolean
any user that is either a moderator or an admin.
- #whisperer? ⇒ Boolean
Instance Method Details
#grant_admin! ⇒ Object
43 44 45 46 47 48 49 |
# File 'app/models/concerns/roleable.rb', line 43 def grant_admin! return if admin ("admin", true) auto_approve_user (:admin) set_default_notification_levels(:admins) end |
#grant_moderation! ⇒ Object
31 32 33 34 35 36 37 |
# File 'app/models/concerns/roleable.rb', line 31 def grant_moderation! return if moderator ("moderator", true) auto_approve_user (:moderator) set_default_notification_levels(:moderators) end |
#regular? ⇒ Boolean
17 18 19 |
# File 'app/models/concerns/roleable.rb', line 17 def regular? !staff? end |
#reload(options = nil) ⇒ Object
74 75 76 77 |
# File 'app/models/concerns/roleable.rb', line 74 def reload( = nil) @whisperer = nil super() end |
#revoke_admin! ⇒ Object
51 52 53 |
# File 'app/models/concerns/roleable.rb', line 51 def revoke_admin! ("admin", false) end |
#revoke_moderation! ⇒ Object
39 40 41 |
# File 'app/models/concerns/roleable.rb', line 39 def revoke_moderation! ("moderator", false) end |
#save_and_refresh_staff_groups! ⇒ Object
55 56 57 58 59 60 |
# File 'app/models/concerns/roleable.rb', line 55 def save_and_refresh_staff_groups! transaction do self.save! Group.refresh_automatic_groups!(:admins, :moderators, :staff) end end |
#set_default_notification_levels(group_name) ⇒ Object
67 68 69 70 71 72 |
# File 'app/models/concerns/roleable.rb', line 67 def set_default_notification_levels(group_name) Group.set_category_and_tag_default_notification_levels!(self, group_name) if group_name == :admins || group_name == :moderators Group.set_category_and_tag_default_notification_levels!(self, :staff) end end |
#set_permission(permission_name, value) ⇒ Object
62 63 64 65 |
# File 'app/models/concerns/roleable.rb', line 62 def (, value) self.public_send("#{}=", value) save_and_refresh_staff_groups! end |
#staff? ⇒ Boolean
any user that is either a moderator or an admin
13 14 15 |
# File 'app/models/concerns/roleable.rb', line 13 def staff? admin || moderator end |
#whisperer? ⇒ Boolean
21 22 23 24 25 26 27 28 29 |
# File 'app/models/concerns/roleable.rb', line 21 def whisperer? @whisperer ||= begin return false if SiteSetting.whispers_allowed_groups_map.empty? return true if admin return true if SiteSetting.whispers_allowed_groups_map.include?(primary_group_id) group_users&.exists?(group_id: SiteSetting.whispers_allowed_groups_map) end end |