Merge branch 'master' into 2678-owned_by
[arvados.git] / services / api / app / models / group.rb
1 require 'can_be_an_owner'
2
3 class Group < ArvadosModel
4   include HasUuid
5   include KindAndEtag
6   include CommonApiTemplate
7   include CanBeAnOwner
8   after_create :invalidate_permissions_cache
9   after_update :maybe_invalidate_permissions_cache
10
11   api_accessible :user, extend: :common do |t|
12     t.add :name
13     t.add :group_class
14     t.add :description
15     t.add :writable_by
16   end
17
18   def maybe_invalidate_permissions_cache
19     if uuid_changed? or owner_uuid_changed?
20       # This can change users' permissions on other groups as well as
21       # this one.
22       invalidate_permissions_cache
23     end
24   end
25
26   def invalidate_permissions_cache
27     # Ensure a new group can be accessed by the appropriate users
28     # immediately after being created.
29     User.invalidate_permissions_cache
30   end
31 end