Fix tinymce assets for steps [SCI-6809]

This commit is contained in:
Anton 2022-05-11 12:58:10 +02:00
parent 3aaf0b2339
commit 24d68da455
7 changed files with 15 additions and 11 deletions

View file

@ -65,9 +65,9 @@ module ActiveStorage
can_read_protocol_in_repository?(asset.object)
when 'ResultText'
render_403 unless can_read_experiment?(asset.object.result.my_module.experiment)
when 'Step'
render_403 unless can_read_protocol_in_module?(asset.object.protocol) ||
can_read_protocol_in_repository?(asset.object.protocol)
when 'StepText'
render_403 unless can_read_protocol_in_module?(asset.object.step.protocol) ||
can_read_protocol_in_repository?(asset.object.step.protocol)
else
render_403
end

View file

@ -64,6 +64,7 @@ module MarvinJsActions
asset_type = 'asset_name'
else
asset_type = 'tiny_mce_asset_name'
step = asset.object.step
end
protocol = step&.protocol

View file

@ -19,6 +19,7 @@ class StepOrderableElementsController < ApplicationController
def update
@element.update!(orderable_params)
TinyMceAsset.update_images(@element, params[:tiny_mce_images], current_user) if @element.is_a? StepText
render json: @element, serializer: "#{@element.class}Serializer".constantize, user: current_user
rescue ActiveRecord::RecordInvalid
render json: {}, status: :unprocessable_entity

View file

@ -96,8 +96,8 @@ class TinyMceAssetsController < ApplicationController
@assoc = @asset.object
if @assoc.class == Step
@protocol = @assoc.protocol
if @assoc.class == StepText
@protocol = @assoc.step.protocol
elsif @assoc.class == Protocol
@protocol = @assoc
elsif @assoc.class == MyModule
@ -108,7 +108,7 @@ class TinyMceAssetsController < ApplicationController
end
def check_read_permission
if @assoc.class == Step || @assoc.class == Protocol
if @assoc.class == StepText || @assoc.class == Protocol
return render_403 unless can_read_protocol_in_module?(@protocol) ||
can_read_protocol_in_repository?(@protocol)
elsif @assoc.class == ResultText || @assoc.class == MyModule
@ -126,8 +126,8 @@ class TinyMceAssetsController < ApplicationController
end
case @assoc
when Step
return render_403 unless can_manage_step?(@assoc)
when StepText
return render_403 unless can_manage_step?(@assoc.step)
when Protocol
return render_403 unless can_manage_protocol_in_module?(@protocol) ||
can_manage_protocol_in_repository?(@protocol)

View file

@ -154,6 +154,8 @@ class Team < ApplicationRecord
case obj.class.name
when 'Protocol'
obj.team_id
when 'StepText'
obj.step.protocol.team_id
when 'MyModule', 'Step'
obj.protocol.team_id
when 'ResultText'

View file

@ -146,8 +146,8 @@ class TinyMceAsset < ApplicationRecord
def clone_tinymce_asset(obj)
begin
# It will trigger only for Step or ResultText
team_id = if obj.class.name == 'Step'
obj.protocol.team_id
team_id = if obj.class.name == 'StepText'
obj.step.protocol.team_id
else
obj.result.my_module.protocol.team_id
end

View file

@ -180,7 +180,7 @@ class Extends
FILE_FA_ICON_MAPPINGS = {}
# Mapping of rich text fileds to specific model
RICH_TEXT_FIELD_MAPPINGS = { 'Step' => :description,
RICH_TEXT_FIELD_MAPPINGS = { 'StepText' => :text,
'ResultText' => :text,
'Protocol' => :description,
'MyModule' => :description }