X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/6290405336817cd282ad5062ce3fc3774ccf61e4..3b729822f6d3c03b2f551cb90edb1ddc674d3063:/app/controllers/user_blocks_controller.rb diff --git a/app/controllers/user_blocks_controller.rb b/app/controllers/user_blocks_controller.rb index 9ee371226..ae6e3c1cd 100644 --- a/app/controllers/user_blocks_controller.rb +++ b/app/controllers/user_blocks_controller.rb @@ -63,18 +63,28 @@ class UserBlocksController < ApplicationController def update if @valid_params - if @user_block.creator != current_user - flash[:error] = t(".only_creator_can_edit") + if current_user != @user_block.creator && + current_user != @user_block.revoker + flash[:error] = t(@user_block.revoker ? ".only_creator_or_revoker_can_edit" : ".only_creator_can_edit") redirect_to :action => "edit" - elsif @user_block.update( - :ends_at => Time.now.utc + @block_period.hours, - :reason => params[:user_block][:reason], - :needs_view => params[:user_block][:needs_view] - ) - flash[:notice] = t(".success") - redirect_to(@user_block) else - render :action => "edit" + user_block_was_active = @user_block.active? + @user_block.reason = params[:user_block][:reason] + @user_block.needs_view = params[:user_block][:needs_view] + @user_block.ends_at = Time.now.utc + @block_period.hours + @user_block.revoker = current_user if user_block_was_active && !@user_block.active? + if !user_block_was_active && @user_block.active? + flash.now[:error] = t(".inactive_block_cannot_be_reactivated") + render :action => "edit" + else + @user_block.ends_at = @user_block.ends_at_was unless user_block_was_active + if @user_block.save + flash[:notice] = t(".success") + redirect_to @user_block + else + render :action => "edit" + end + end end else redirect_to edit_user_block_path(:id => params[:id]) @@ -142,9 +152,6 @@ class UserBlocksController < ApplicationController if UserBlock::PERIODS.exclude?(@block_period) flash[:error] = t("user_blocks.filter.block_period") - elsif @user_block && !@user_block.active? - flash[:error] = t("user_blocks.filter.block_expired") - else @valid_params = true end