Factorize require_organizer and require_{draft,open,closed}_vote

This commit is contained in:
ricola 2025-04-06 17:04:31 -06:00
parent dc702d0723
commit 7731c0e59a

41
vote.rb
View file

@ -146,7 +146,8 @@ end
post '/votes/:id/edit' do
require_login
find_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft' and @vote.users.exists?(current_user.id)
require_organizer
require_draft_vote
@vote.title = params[:title]
@vote.description = params[:description]
@vote.save
@ -156,7 +157,8 @@ end
post '/votes/:id/candidates' do
require_login
find_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft' and @vote.users.exists?(current_user.id)
require_organizer
require_draft_vote
@candidate = Candidate.new(name: params[:name],
description: params[:description])
@candidate.vote = @vote
@ -167,7 +169,8 @@ end
post '/votes/:id/candidates/:cid/delete' do
require_login
find_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft' and @vote.users.exists?(current_user.id)
require_organizer
require_draft_vote
@candidate = Candidate.find(params[:cid])
@candidate.destroy
redirect '/votes/' + @vote.secure_id
@ -176,7 +179,8 @@ end
post '/votes/:id/open' do
require_login
find_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft' and @vote.users.exists?(current_user.id)
require_organizer
require_draft_vote
@vote.state = 'open'
@vote.save
redirect '/votes/' + @vote.secure_id
@ -185,7 +189,8 @@ end
post '/votes/:id/draft' do
require_login
find_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'open' and @vote.users.exists?(current_user.id)
require_organizer
require_open_vote
@vote.ratings.each {|r| r.destroy}
@vote.state = 'draft'
@vote.save
@ -195,7 +200,8 @@ end
post '/votes/:id/close' do
require_login
find_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'open' and @vote.users.exists?(current_user.id)
require_organizer
require_open_vote
@vote.state = 'closed'
@vote.save
redirect '/votes/' + @vote.secure_id
@ -204,7 +210,8 @@ end
post '/votes/:id/reopen' do
require_login
find_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'closed' and @vote.users.exists?(current_user.id)
require_organizer
require_closed_vote
@vote.state = 'open'
@vote.save
redirect '/votes/' + @vote.secure_id
@ -224,7 +231,7 @@ end
post '/votes/:id/organizers' do
require_login
find_vote
redirect '/votes/' + @vote.secure_id unless @vote.users.exists?(current_user.id)
require_organizer
user = User.find_by(email: params[:email])
@vote.users << user
redirect '/votes/' + @vote.secure_id
@ -233,7 +240,7 @@ end
post '/votes/:id/delete' do
require_login
find_vote
redirect '/votes/' + @vote.secure_id unless @vote.users.exists?(current_user.id)
require_organizer
@vote.destroy
redirect '/'
end
@ -254,4 +261,20 @@ helpers do
def find_vote(params)
@vote = Vote.find_by(secure_id: params[:id])
end
def require_organizer
redirect '/votes/' + @vote.secure_id unless @vote.users.exists?(current_user.id)
end
def require_draft_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'draft'
end
def require_open_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'open'
end
def require_closed_vote
redirect '/votes/' + @vote.secure_id unless @vote.state == 'closed'
end
end