discourse/app/controllers/email_controller.rb

46 lines
1.3 KiB
Ruby
Raw Normal View History

2013-02-06 03:16:51 +08:00
class EmailController < ApplicationController
skip_before_filter :check_xhr, :preload_json
layout 'no_ember'
2013-02-06 03:16:51 +08:00
before_filter :ensure_logged_in, only: :preferences_redirect
skip_before_filter :redirect_to_login_if_required
2013-02-06 03:16:51 +08:00
def preferences_redirect
redirect_to(email_preferences_path(current_user.username_lower))
end
def unsubscribe
@user = DigestUnsubscribeKey.user_for_key(params[:key])
2016-01-20 17:25:25 +08:00
RateLimiter.new(@user, "unsubscribe_via_email", 3, 1.day).performed! unless @user && @user.staff?
2013-02-06 03:16:51 +08:00
# Don't allow the use of a key while logged in as a different user
if current_user.present? && (@user != current_user)
@different_user = true
return
end
2013-02-06 03:16:51 +08:00
if @user.blank?
2013-02-06 03:16:51 +08:00
@not_found = true
return
2013-02-06 03:16:51 +08:00
end
2016-01-20 17:25:25 +08:00
if params[:from_all]
@user.user_option.update_columns(email_always: false,
email_digests: false,
email_direct: false,
email_private_messages: false)
2016-01-20 17:25:25 +08:00
else
@user.user_option.update_column(:email_digests, false)
2016-01-20 17:25:25 +08:00
end
@success = true
2013-02-06 03:16:51 +08:00
end
def resubscribe
@user = DigestUnsubscribeKey.user_for_key(params[:key])
2013-02-06 03:16:51 +08:00
raise Discourse::NotFound unless @user.present?
@user.user_option.update_column(:email_digests, true)
2013-02-06 03:16:51 +08:00
end
end