43 lines
1.4 KiB
Ruby
43 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module EuchreCamp
|
|
module Actions
|
|
module Admin
|
|
module Matches
|
|
class Edit < EuchreCamp::Action
|
|
include Deps[matches_repo: 'repositories.matches', players_repo: 'repositories.players']
|
|
|
|
def handle(request, response)
|
|
match_id = request.params[:id]
|
|
match = matches_repo.by_id(match_id)
|
|
user = current_user(request)
|
|
|
|
# Check authorization
|
|
if user
|
|
# Check if user can edit this match (within 5 minutes or admin)
|
|
unless EuchreCamp::Services::Authorization.can?(user, :edit_own_match_within_5_min, match) ||
|
|
EuchreCamp::Services::Authorization.can?(user, :edit_any_record)
|
|
response.flash[:error] = 'Match cannot be edited (too old or insufficient permissions)'
|
|
response.redirect_to '/admin/matches'
|
|
return
|
|
end
|
|
else
|
|
response.flash[:error] = 'Please login to edit matches'
|
|
response.redirect_to '/login'
|
|
return
|
|
end
|
|
|
|
# Get available players for the form
|
|
all_players = players_repo.all
|
|
|
|
render_with_player(request, response,
|
|
match: match,
|
|
all_players: all_players
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|