X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/8e21e4e80156a1fc29d7b283b254ff623ca844b6..f0764d3ecae3aa9251eadff96990f4afe530924d:/app/controllers/changesets_controller.rb diff --git a/app/controllers/changesets_controller.rb b/app/controllers/changesets_controller.rb index 859242b60..5eb14629a 100644 --- a/app/controllers/changesets_controller.rb +++ b/app/controllers/changesets_controller.rb @@ -9,6 +9,7 @@ class ChangesetsController < ApplicationController before_action :authorize_web before_action :set_locale before_action -> { check_database_readable(:need_api => true) }, :only => [:index, :feed] + before_action :check_database_writable, :only => [:subscribe, :unsubscribe] authorize_resource @@ -74,6 +75,34 @@ class ChangesetsController < ApplicationController index end + ## + # subscribe to a changeset + def subscribe + @changeset = Changeset.find(params[:id]) + + if request.post? + @changeset.subscribe(current_user) unless @changeset.subscribed?(current_user) + + redirect_to changeset_path(@changeset) + end + rescue ActiveRecord::RecordNotFound + render :action => "no_such_entry", :status => :not_found + end + + ## + # unsubscribe from a changeset + def unsubscribe + @changeset = Changeset.find(params[:id]) + + if request.post? + @changeset.unsubscribe(current_user) + + redirect_to changeset_path(@changeset) + end + rescue ActiveRecord::RecordNotFound + render :action => "no_such_entry", :status => :not_found + end + private #------------------------------------------------------------