scinote-web/app/controllers/access_permissions/my_modules_controller.rb

60 lines
1.6 KiB
Ruby

# frozen_string_literal: true
module AccessPermissions
class MyModulesController < BaseController
before_action :set_experiment
before_action :set_project
def update
if permitted_params[:user_role_id] == 'reset'
parent_assignment = @experiment.public_send(:"#{assignment_type}_assignments").find_or_initialize_by(
"#{assignment_type}_id": permitted_params[:"#{assignment_type}_id"],
team: current_team
)
@assignment.update!(
user_role_id: parent_assignment.user_role_id,
assigned_by: current_user,
assigned: :automatically
)
else
@assignment.update!(
user_role_id: permitted_params[:user_role_id],
assigned_by: current_user,
assigned: :manually
)
end
case assignment_type
when :user_group
log_activity(:my_module_access_changed_user_group, user_group: @assignment.user_group.id, role: @assignment.user_role.name)
when :user
log_activity(:change_user_role_on_my_module, user_target: @assignment.user.id, role: @assignment.user_role.name)
end
end
private
def set_project
@project = @experiment.project
end
def set_experiment
@experiment = @model.experiment
end
def set_model
@model = MyModule.includes(user_assignments: %i(user user_role)).find_by(id: params[:id])
render_404 unless @model
end
def check_manage_permissions
render_403 unless can_manage_my_module_users?(@model)
end
def check_read_permissions
render_403 unless can_read_my_module?(@model)
end
end
end