Fix protocol dropdown options for private protocol [SCI-7983] (#5337)

This commit is contained in:
ajugo 2023-04-25 16:00:20 +02:00 committed by GitHub
parent 342b581259
commit c4a0ebeadf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 5 deletions

View file

@ -27,8 +27,6 @@ class ProtocolsController < ApplicationController
protocolsio_index
datatable
)
# For update_from_parent and update_from_parent_modal we don't need to check
# read permission for the parent protocol
before_action :check_manage_permissions, only: %i(
update_keywords
update_description
@ -37,11 +35,14 @@ class ProtocolsController < ApplicationController
update_authors
unlink
unlink_modal
delete_steps
)
before_action :check_manage_with_read_protocol_permissions, only: %i(
revert
revert_modal
update_from_parent
update_from_parent_modal
delete_steps
)
before_action :check_restore_all_in_repository_permissions, only: :restore
before_action :check_archive_all_in_repository_permissions, only: :archive
@ -1010,6 +1011,13 @@ class ProtocolsController < ApplicationController
can_manage_protocol_draft_in_repository?(@protocol))
end
def check_manage_with_read_protocol_permissions
@protocol = Protocol.find_by(id: params[:id])
render_403 unless @protocol.present? && @protocol.parent.present? &&
(can_manage_protocol_in_module?(@protocol) &&
can_read_protocol_in_repository?(@protocol.parent))
end
def check_save_as_draft_permissions
@protocol = Protocol.find_by(id: params[:id])
render_403 unless @protocol.present? && can_save_protocol_version_as_draft?(@protocol)

View file

@ -174,14 +174,16 @@ class ProtocolSerializer < ActiveModel::Serializer
def revert_protocol_url
return unless can_manage_protocol_in_module?(object) && object.linked? &&
object.parent.active? && object.newer_than_parent?
object.parent.active? && object.newer_than_parent? &&
can_read_protocol_in_repository?(object.parent)
revert_modal_protocol_path(object, format: :json)
end
def update_protocol_url
return unless can_manage_protocol_in_module?(object) && object.linked? &&
object.parent.active? && object.parent_newer?
object.parent.active? && object.parent_newer? &&
can_read_protocol_in_repository?(object.parent)
update_from_parent_modal_protocol_path(object, format: :json)
end