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
44 45 46 47 48 49 50 |
# File 'app/models/concerns/roleable.rb', line 44 def grant_admin! return if admin ("admin", true) auto_approve_user (:admin) set_default_notification_levels(:admins) end |
#grant_moderation! ⇒ Object
32 33 34 35 36 37 38 |
# File 'app/models/concerns/roleable.rb', line 32 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
75 76 77 78 |
# File 'app/models/concerns/roleable.rb', line 75 def reload( = nil) @whisperer = nil super() end |
#revoke_admin! ⇒ Object
52 53 54 |
# File 'app/models/concerns/roleable.rb', line 52 def revoke_admin! ("admin", false) end |
#revoke_moderation! ⇒ Object
40 41 42 |
# File 'app/models/concerns/roleable.rb', line 40 def revoke_moderation! ("moderator", false) end |
#save_and_refresh_staff_groups! ⇒ Object
56 57 58 59 60 61 |
# File 'app/models/concerns/roleable.rb', line 56 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
68 69 70 71 72 73 |
# File 'app/models/concerns/roleable.rb', line 68 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
63 64 65 66 |
# File 'app/models/concerns/roleable.rb', line 63 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 30 |
# File 'app/models/concerns/roleable.rb', line 21 def whisperer? @whisperer ||= begin whispers_allowed_group_ids = SiteSetting.whispers_allowed_group_ids return false if whispers_allowed_group_ids.blank? return true if admin return true if whispers_allowed_group_ids.include?(primary_group_id) group_users&.exists?(group_id: whispers_allowed_group_ids) end end |