Merge pull request #8658 from andrej-scinote/aj_SCI_12081

Fix repository read permission for deleted repositories [SCI-12081]
This commit is contained in:
andrej-scinote 2025-07-14 11:24:51 +02:00 committed by GitHub
commit ccce7cfac2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 4 additions and 1 deletions

View file

@ -90,6 +90,7 @@ class MyModuleShareableLinksController < ApplicationController
page = (params[:start].to_i / per_page) + 1
datatable_service = RepositorySnapshotDatatableService.new(@repository_snapshot, params, nil, @my_module, preload_cells: false)
@datatable_params = { shareable_link_view: true }
@all_rows_count = datatable_service.all_count
@filtered_rows_count = datatable_service.filtered_count
@columns_mappings = datatable_service.mappings

View file

@ -4,7 +4,9 @@ Canaid::Permissions.register_for(RepositoryBase) do
# repository: read/export
can :read_repository do |user, repository|
if repository.is_a?(RepositorySnapshot)
repository.original_repository.permission_granted?(user, RepositoryPermissions::READ) && can_read_my_module?(user, repository.my_module)
original_repository = repository.original_repository
# If original repository is deleted, snapshot ownership should be transferred to task
(!original_repository || original_repository.permission_granted?(user, RepositoryPermissions::READ)) && can_read_my_module?(user, repository.my_module)
else
repository.permission_granted?(user, RepositoryPermissions::READ)
end