Class: Role
- Inherits:
-
Object
- Object
- Role
- Defined in:
- app/models/role.rb
Overview
Class Method Summary collapse
-
.global_admins ⇒ Object
This finder method returns all global admins.
-
.of(given_user) ⇒ Object
Example:.
Instance Method Summary collapse
- #admin? ⇒ Boolean
- #admin_groups ⇒ Object
- #administrated_objects ⇒ Object
- #administrated_users ⇒ Object
- #allow_preview? ⇒ Boolean
-
#allowed_preview_roles ⇒ Object
The system allows to simulate a certain role when viewing an object.
-
#current_member? ⇒ Boolean
Roles for groups.
- #deceased_member? ⇒ Boolean
- #directly_administrated_groups ⇒ Object
- #directly_administrated_objects ⇒ Object
- #for(given_object) ⇒ Object
- #former_member? ⇒ Boolean
- #full_member? ⇒ Boolean
-
#global_admin? ⇒ Boolean
Roles for structureables.
-
#global_officer? ⇒ Boolean
Global Roles.
- #group ⇒ Object
- #guest? ⇒ Boolean
-
#in(given_object) ⇒ Object
Example:.
-
#initialize(given_user, given_object) ⇒ Role
constructor
A new instance of Role.
- #member? ⇒ Boolean
- #object ⇒ Object
- #officer? ⇒ Boolean
-
#select_objects_where_user_is_admin(objects) ⇒ Object
Finding administrated objects.
-
#to_s ⇒ Object
Example Role.of(user).for(page).to_s # => ‘admin’.
- #user ⇒ Object
Constructor Details
#initialize(given_user, given_object) ⇒ Role
Returns a new instance of Role.
12 13 14 15 |
# File 'app/models/role.rb', line 12 def initialize(given_user, given_object) @user = given_user @object = given_object end |
Class Method Details
.global_admins ⇒ Object
This finder method returns all global admins.
160 161 162 |
# File 'app/models/role.rb', line 160 def self.global_admins Group.find_everyone_group.try(:find_admins) || [] end |
.of(given_user) ⇒ Object
Example:
Role.of(user).in(corporation).to_s # => "guest"
21 22 23 |
# File 'app/models/role.rb', line 21 def self.of(given_user) self.new(given_user, nil) end |
Instance Method Details
#admin? ⇒ Boolean
85 86 87 |
# File 'app/models/role.rb', line 85 def admin? global_admin? || (object && object.admins_of_self_and_ancestors.include?(user)) end |
#admin_groups ⇒ Object
141 142 143 |
# File 'app/models/role.rb', line 141 def admin_groups user.groups.find_all_by_flag(:admins_parent) end |
#administrated_objects ⇒ Object
150 151 152 |
# File 'app/models/role.rb', line 150 def administrated_objects directly_administrated_objects + directly_administrated_objects.collect { |o| o.descendants }.flatten end |
#administrated_users ⇒ Object
153 154 155 |
# File 'app/models/role.rb', line 153 def administrated_users directly_administrated_groups.collect { |g| g.descendant_users }.flatten end |
#allow_preview? ⇒ Boolean
127 128 129 130 131 |
# File 'app/models/role.rb', line 127 def allow_preview? # The preview makes sense for officers and above. # All above roles are also officer roles. officer? || global_officer? end |
#allowed_preview_roles ⇒ Object
The system allows to simulate a certain role when viewing an object. This determines which simulations are allowed.
119 120 121 122 123 124 125 126 |
# File 'app/models/role.rb', line 119 def allowed_preview_roles return ['global_admin', 'admin', 'officer', 'global_officer', 'user'] if global_admin? return ['admin', 'officer', 'user'] if admin? return ['officer', 'global_officer', 'user'] if global_officer? and officer? return ['officer', 'user'] if officer? return ['global_officer', 'user'] if global_officer? return [] end |
#current_member? ⇒ Boolean
Roles for groups
52 53 54 |
# File 'app/models/role.rb', line 52 def current_member? member? && full_member? end |
#deceased_member? ⇒ Boolean
73 74 75 |
# File 'app/models/role.rb', line 73 def deceased_member? object && object.kind_of?(Group) && object.corporation? && user.id.in?(object.deceased_members.map(&:id)) && (not former_member?) end |
#directly_administrated_groups ⇒ Object
147 148 149 |
# File 'app/models/role.rb', line 147 def directly_administrated_groups admin_groups.collect { |g| g.parent_groups.first.parent_groups.first } - [nil] end |
#directly_administrated_objects ⇒ Object
144 145 146 |
# File 'app/models/role.rb', line 144 def directly_administrated_objects admin_groups.collect { |g| g.parent_groups.first.parents.first } - [nil] end |
#for(given_object) ⇒ Object
33 34 35 |
# File 'app/models/role.rb', line 33 def for(given_object) self.in(given_object) end |
#former_member? ⇒ Boolean
69 70 71 |
# File 'app/models/role.rb', line 69 def former_member? object && object.kind_of?(Group) && object.corporation? && user.former_member_of_corporation?(object) end |
#full_member? ⇒ Boolean
56 57 58 59 |
# File 'app/models/role.rb', line 56 def full_member? object.kind_of?(Group) && (( ([group] + group.descendant_groups) & user.groups.find_all_by_flag(:full_members) ).count > 0) end |
#global_admin? ⇒ Boolean
Roles for structureables
81 82 83 |
# File 'app/models/role.rb', line 81 def global_admin? user.global_admin? end |
#global_officer? ⇒ Boolean
Global Roles
112 113 114 |
# File 'app/models/role.rb', line 112 def global_officer? global_admin? || (user.ancestor_groups.find_all_by_flag(:global_officer).count > 0) end |
#group ⇒ Object
44 45 46 |
# File 'app/models/role.rb', line 44 def group @object end |
#guest? ⇒ Boolean
65 66 67 |
# File 'app/models/role.rb', line 65 def guest? object && object.kind_of?(Group) && user.guest_of?(object) end |
#in(given_object) ⇒ Object
29 30 31 32 |
# File 'app/models/role.rb', line 29 def in(given_object) @object = given_object return self end |
#member? ⇒ Boolean
61 62 63 |
# File 'app/models/role.rb', line 61 def member? object && object.kind_of?(Group) && user.member_of?(object) end |
#object ⇒ Object
41 42 43 |
# File 'app/models/role.rb', line 41 def object @object end |
#officer? ⇒ Boolean
89 90 91 |
# File 'app/models/role.rb', line 89 def officer? global_admin? || (object && object.officers_of_self_and_ancestors.include?(user)) end |
#select_objects_where_user_is_admin(objects) ⇒ Object
138 139 140 |
# File 'app/models/role.rb', line 138 def select_objects_where_user_is_admin(objects) objects & administrated_objects end |
#to_s ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'app/models/role.rb', line 96 def to_s return 'global_admin' if global_admin? return 'admin' if admin? return 'officer' if officer? return 'global_officer' if global_officer? return 'full_member' if full_member? return 'guest' if guest? return 'former_member' if former_member? return 'deceased_member' if deceased_member? return 'member' if member? return '' end |
#user ⇒ Object
37 38 39 |
# File 'app/models/role.rb', line 37 def user @user || raise('User not given, when trying to determine Role.') end |