Use "visible" scope when finding traces

Allows to eliminate some :not_found branches.
This commit is contained in:
Anton Khorev 2024-03-27 11:20:19 +03:00
parent 99bed16f9a
commit a969e08641
3 changed files with 14 additions and 21 deletions

View file

@ -6,9 +6,9 @@ module Traces
authorize_resource :trace
def show
trace = Trace.find(params[:trace_id])
trace = Trace.visible.find(params[:trace_id])
if trace.visible? && trace.inserted?
if trace.inserted?
if trace.public? || (current_user && current_user == trace.user)
if trace.icon.attached?
redirect_to rails_blob_path(trace.icon, :disposition => "inline")

View file

@ -6,9 +6,9 @@ module Traces
authorize_resource :trace
def show
trace = Trace.find(params[:trace_id])
trace = Trace.visible.find(params[:trace_id])
if trace.visible? && trace.inserted?
if trace.inserted?
if trace.public? || (current_user && current_user == trace.user)
if trace.icon.attached?
redirect_to rails_blob_path(trace.image, :disposition => "inline")

View file

@ -68,10 +68,9 @@ class TracesController < ApplicationController
end
def show
@trace = Trace.find(params[:id])
@trace = Trace.visible.find(params[:id])
if @trace&.visible? &&
(@trace&.public? || @trace&.user == current_user)
if @trace.public? || @trace.user == current_user
@title = t ".title", :name => @trace.name
else
flash[:error] = t ".trace_not_found"
@ -88,11 +87,9 @@ class TracesController < ApplicationController
end
def edit
@trace = Trace.find(params[:id])
@trace = Trace.visible.find(params[:id])
if !@trace.visible?
head :not_found
elsif current_user.nil? || @trace.user != current_user
if current_user.nil? || @trace.user != current_user
head :forbidden
else
@title = t ".title", :name => @trace.name
@ -136,11 +133,9 @@ class TracesController < ApplicationController
end
def update
@trace = Trace.find(params[:id])
@trace = Trace.visible.find(params[:id])
if !@trace.visible?
head :not_found
elsif current_user.nil? || @trace.user != current_user
if current_user.nil? || @trace.user != current_user
head :forbidden
elsif @trace.update(trace_params)
flash[:notice] = t ".updated"
@ -154,11 +149,9 @@ class TracesController < ApplicationController
end
def destroy
trace = Trace.find(params[:id])
trace = Trace.visible.find(params[:id])
if !trace.visible?
head :not_found
elsif current_user.nil? || (trace.user != current_user && !current_user.administrator? && !current_user.moderator?)
if current_user.nil? || (trace.user != current_user && !current_user.administrator? && !current_user.moderator?)
head :forbidden
else
trace.visible = false
@ -176,9 +169,9 @@ class TracesController < ApplicationController
end
def data
trace = Trace.find(params[:id])
trace = Trace.visible.find(params[:id])
if trace.visible? && (trace.public? || (current_user && current_user == trace.user))
if trace.public? || (current_user && current_user == trace.user)
if Acl.no_trace_download(request.remote_ip)
head :forbidden
elsif request.format == Mime[:xml]