Module: Mongoid::AuthorizedObject
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/kit/models/authorized_object.rb
Instance Method Summary collapse
- #able_update?(user) ⇒ Boolean
-
#able_view?(user) ⇒ Boolean
Special Permissions.
- #add_collaborator(role) ⇒ Object
-
#add_viewer(role) ⇒ Object
Viewers and Collaborators.
- #minor_viewers ⇒ Object
- #normalized_collaborators ⇒ Object
-
#owner ⇒ Object
Owner.
- #owner=(user) ⇒ Object
-
#owner_name=(name) ⇒ Object
TODO3 update it later, MM uses public API to unmarshal object groups.google.com/group/mongomapper/browse_thread/thread/ab34457e0ba9c472#.
- #remove_collaborator(role) ⇒ Object
- #remove_viewer(role) ⇒ Object
Instance Method Details
#able_update?(user) ⇒ Boolean
145 146 147 |
# File 'lib/kit/models/authorized_object.rb', line 145 def able_update? user user.roles.any?{|role| normalized_collaborators.include? role} end |
#able_view?(user) ⇒ Boolean
Special Permissions
141 142 143 |
# File 'lib/kit/models/authorized_object.rb', line 141 def able_view? user user.roles.any?{|role| viewers.include? role} end |
#add_collaborator(role) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/kit/models/authorized_object.rb', line 108 def add_collaborator role role = role.to_s should_be_valid_user_input_role role return if collaborators.include? role collaborators = self.collaborators.clone collaborators << role self.collaborators = collaborators add_viewer role collaborators end |
#add_viewer(role) ⇒ Object
Viewers and Collaborators
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/kit/models/authorized_object.rb', line 66 def add_viewer role role = role.to_s should_be_valid_user_input_role role return if viewers.include? role roles = viewers roles << role roles = Role.denormalize_to_higher_roles roles roles << 'manager' unless roles.include? 'manager' self.viewers = roles.sort viewers end |
#minor_viewers ⇒ Object
98 99 100 101 102 103 104 105 106 |
# File 'lib/kit/models/authorized_object.rb', line 98 def minor_viewers unless minor_viewers = cache[:minor_viewers] viewers = self.viewers.clone viewers.delete 'manager' minor_viewers = Role.minor_roles viewers cache[:minor_viewers] = minor_viewers end minor_viewers end |
#normalized_collaborators ⇒ Object
128 129 130 131 132 133 134 135 136 |
# File 'lib/kit/models/authorized_object.rb', line 128 def normalized_collaborators unless normalized_collaborators = cache[:normalized_collaborators] normalized_collaborators = Role.denormalize_to_higher_roles collaborators normalized_collaborators << "user:#{owner_name}" unless Mongoid::Authorized.anonymous?(owner_name) normalized_collaborators.sort! cache[:normalized_collaborators] = normalized_collaborators end normalized_collaborators end |
#owner ⇒ Object
Owner
33 34 35 36 |
# File 'lib/kit/models/authorized_object.rb', line 33 def owner return nil if owner_name.blank? cache[:owner] ||= Models::User.by_name!(owner_name) end |
#owner=(user) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/kit/models/authorized_object.rb', line 38 def owner= user user.must_be.an Models::User cache[:owner] = user self.owner_name = user.name user end |
#owner_name=(name) ⇒ Object
TODO3 update it later, MM uses public API to unmarshal object groups.google.com/group/mongomapper/browse_thread/thread/ab34457e0ba9c472#
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/kit/models/authorized_object.rb', line 47 def owner_name= name owner_role = "user:#{name}" old_owner_role = "user:#{owner_name}" unless viewers.include? owner_role viewers.delete old_owner_role viewers << owner_role viewers.sort! end # write_attribute :owner_name, name super name clear_cache owner_name end |
#remove_collaborator(role) ⇒ Object
121 122 123 124 125 126 |
# File 'lib/kit/models/authorized_object.rb', line 121 def remove_collaborator role role = role.to_s should_be_valid_user_input_role role collaborators.delete role collaborators end |
#remove_viewer(role) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/kit/models/authorized_object.rb', line 80 def remove_viewer role role = role.to_s should_be_valid_user_input_role role return unless viewers.include? role roles = viewers Role.denormalize_to_higher_roles([role]).each do |r| roles.delete r end roles << 'manager' unless roles.include? 'manager' self.viewers = roles.sort remove_collaborator role viewers end |