X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/64e7ea7910c797f0339ddd1d5df676b3e53fa9de..b12f667daa270a4e3c656d16f30620ca763f9578:/services/api/app/controllers/arvados/v1/repositories_controller.rb?ds=sidebyside diff --git a/services/api/app/controllers/arvados/v1/repositories_controller.rb b/services/api/app/controllers/arvados/v1/repositories_controller.rb index 6ba98c8e09..8b45c56bcb 100644 --- a/services/api/app/controllers/arvados/v1/repositories_controller.rb +++ b/services/api/app/controllers/arvados/v1/repositories_controller.rb @@ -1,4 +1,6 @@ class Arvados::V1::RepositoriesController < ApplicationController + skip_before_filter :find_object_by_uuid, :only => :get_all_permissions + skip_before_filter :render_404_if_no_object, :only => :get_all_permissions before_filter :admin_required, :only => :get_all_permissions def get_all_permissions @users = {} @@ -12,7 +14,7 @@ class Arvados::V1::RepositoriesController < ApplicationController gitolite_permissions = '' perms = [] repo.permissions.each do |perm| - if perm.tail_kind == 'arvados#group' + if ArvadosModel::resource_class_for_uuid(perm.tail_uuid) == Group @users.each do |user_uuid, user| user.group_permissions.each do |group_uuid, perm_mask| if perm_mask[:write] @@ -26,6 +28,12 @@ class Arvados::V1::RepositoriesController < ApplicationController perms << {name: perm.name, user_uuid: perm.tail_uuid} end end + # Owner of the repository, and all admins, can RW + ([repo.owner_uuid] + @users.keys).each do |user_uuid| + %w(can_read can_write).each do |name| + perms << {name: name, user_uuid: user_uuid} + end + end perms.each do |perm| user_uuid = perm[:user_uuid] @user_aks[user_uuid] = @users[user_uuid].andand.authorized_keys.andand.