Implement unsubscribe route to delete subscriptions

This commit is contained in:
Maximilian Grundke
2017-09-13 11:57:34 +02:00
parent 0e8df9d738
commit cea2781417
5 changed files with 52 additions and 1 deletions

View File

@ -18,6 +18,34 @@ class SubscriptionsController < ApplicationController
authorize!
end
# DELETE /subscriptions/1
# DELETE /subscriptions/1.json
def destroy
begin
@subscription = Subscription.find(params[:id])
rescue
skip_authorization
respond_to do |format|
format.html { redirect_to request_for_comments_url, alert: t('subscriptions.subscription_not_existent') }
format.json { head :internal_server_error }
end
else
authorize!
rfc = @subscription.try(:request_for_comment)
if @subscription.destroy
respond_to do |format|
format.html { redirect_to request_for_comment_url(rfc), notice: t('subscriptions.successfully_unsubscribed') }
format.json { head :destroyed }
end
else
respond_to do |format|
format.html { redirect_to request_for_comment_url(rfc), :flash => { :danger => t('shared.message_failure') } }
format.json { head :internal_server_error }
end
end
end
end
def set_subscription
@subscription = Subscription.find(params[:id])
authorize!

View File

@ -2,4 +2,17 @@ class SubscriptionPolicy < ApplicationPolicy
def create?
everyone
end
def destroy?
author? || admin?
end
def show_error?
everyone
end
def author?
@user == @record.user
end
private :author?
end

View File

@ -630,4 +630,7 @@ de:
comments:
deleted: "Gelöscht"
save_update: "Speichern"
subscriptions:
successfully_unsubscribed: "Ihr Abonnement für weitere Kommentare auf dieser Kommentaranfrage wurde erfolgreich beendet."
subscription_not_existent: "Das Abonnement, von dem Sie sich abmelden wollen, existiert nicht."

View File

@ -651,3 +651,6 @@ en:
comments:
deleted: "Deleted"
save_update: "Save"
subscriptions:
successfully_unsubscribed: "You successfully unsubscribed from this Request for Comment"
subscription_not_existent: "The subscription you want to unsubscribe from does not exist."

View File

@ -21,7 +21,11 @@ Rails.application.routes.draw do
delete '/comment_by_id', to: 'comments#destroy_by_id'
put '/comments', to: 'comments#update'
resources :subscriptions
resources :subscriptions do
member do
get :unsubscribe, to: 'subscriptions#destroy'
end
end
root to: 'application#welcome'