class OverlaysController < ApplicationController before_action :set_overlay, only: [ :destroy ] before_action :set_server_template, only: [ :create ] def index @system_overlays = Overlay.system_overlays @custom_overlays = current_user.overlays.custom_overlays.order(:name) end def create @server_template = current_user.server_templates.find(params[:server_template_id]) @overlay = Overlay.find(params[:overlay_id]) position = @server_template.template_overlays.maximum(:position).to_i + 1 @template_overlay = @server_template.template_overlays.build(overlay_id: @overlay.id, position: position) if @template_overlay.save Activity.log(current_user, "added_overlay", "ServerTemplate", @server_template.id, { overlay: @overlay.name }) redirect_to @server_template, notice: "Overlay added successfully!" else redirect_to @server_template, alert: "Failed to add overlay" end end def destroy authorize_user! server_template = @overlay.server_templates.find(params[:server_template_id]) @overlay.template_overlays.where(server_template_id: server_template.id).destroy_all Activity.log(current_user, "removed_overlay", "ServerTemplate", server_template.id, { overlay: @overlay.name }) redirect_to server_template, notice: "Overlay removed successfully!" end private def set_overlay @overlay = Overlay.find(params[:id]) end def set_server_template @server_template = current_user.server_templates.find(params[:server_template_id]) end def authorize_user! redirect_to dashboard_path, alert: "Not authorized" unless @overlay.user_id.nil? || @overlay.user_id == current_user.id end end