X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/970254fba5b9297884c521987d081c232004eb77..385d9ac5f47bec5c5a5fc9770c74b1a7d8dd2974:/services/api/app/models/group.rb diff --git a/services/api/app/models/group.rb b/services/api/app/models/group.rb index b1b2e942c6..aa3a19bf87 100644 --- a/services/api/app/models/group.rb +++ b/services/api/app/models/group.rb @@ -44,6 +44,18 @@ class Group < ArvadosModel t.add :is_trashed t.add :properties t.add :frozen_by_uuid + t.add :can_write + t.add :can_manage + end + + protected + + def self.attributes_required_columns + super.merge( + 'can_write' => ['owner_uuid', 'uuid'], + 'can_manage' => ['owner_uuid', 'uuid'], + 'writable_by' => ['owner_uuid', 'uuid'], + ) end def ensure_filesystem_compatible_name @@ -239,7 +251,7 @@ class Group < ArvadosModel if self.owner_uuid != system_user_uuid raise "Owner uuid for role must be system user" end - raise PermissionDeniedError unless current_user.can?(manage: uuid) + raise PermissionDeniedError.new("role group cannot be modified without can_manage permission") unless current_user.can?(manage: uuid) true else super @@ -257,6 +269,18 @@ class Group < ArvadosModel end end + def permission_to_create + if !super + return false + elsif group_class == "role" && + !Rails.configuration.Users.CanCreateRoleGroups && + !current_user.andand.is_admin + raise PermissionDeniedError.new("this cluster does not allow users to create role groups") + else + return true + end + end + def permission_to_update if !super return false