scinote-web/app/controllers/my_module_shareable_links_controller.rb
Soufiane 33bb79d17a
Implement details and notes sections of shareable links [SCI-8750] (#5710)
Co-authored-by: Sboursen <dev.sboursen@gmail.com>
2023-07-06 15:10:26 +02:00

83 lines
2.1 KiB
Ruby

# frozen_string_literal: true
class MyModuleShareableLinksController < ApplicationController
before_action :load_my_module, except: %i(my_module_protocol_show)
before_action :load_shareable_link, only: %i(update destroy)
before_action :check_view_permissions, only: :show
before_action :check_manage_permissions, except: %i(show my_module_protocol_show)
skip_before_action :authenticate_user!, only: %i(my_module_protocol_show)
def show
render json: @my_module.shareable_link
end
def my_module_protocol_show
shareable_link = ShareableLink.find_by(uuid: params[:uuid])
return render_403 if shareable_link.blank?
@my_module = shareable_link.shareable
render 'shareable_links/my_module_protocol_show', layout: 'shareable_links'
end
def create
@my_module.create_shareable_link(
uuid: @my_module.signed_id,
description: params[:description],
team: @my_module.team,
created_by: current_user
)
log_activity(:task_link_sharing_enabled)
render json: @my_module.shareable_link
end
def update
@my_module.shareable_link.update!(
description: params[:description],
last_modified_by: current_user
)
log_activity(:shared_task_message_edited)
render json: @my_module.shareable_link
end
def destroy
@my_module.shareable_link.destroy!
log_activity(:task_link_sharing_disabled)
render json: {}
end
private
def load_my_module
@my_module = MyModule.find_by(id: params[:my_module_id])
render_404 unless @my_module
end
def check_view_permissions
render_403 unless can_view_my_module?(@my_module)
end
def check_manage_permissions
render_403 unless can_share_my_module?(@my_module)
end
def log_activity(type_of)
Activities::CreateActivityService
.call(activity_type: type_of,
owner: current_user,
team: @my_module.team,
project: @my_module.project,
subject: @my_module,
message_items: {
my_module: @my_module.id,
user: current_user.id
})
end
end