2012-07-01 20:31:31 +02:00
|
|
|
class SettingsController < ApplicationController
|
|
|
|
before_filter :require_logged_in_user
|
|
|
|
|
|
|
|
def index
|
2012-09-07 16:18:15 +02:00
|
|
|
@title = "Account Settings"
|
|
|
|
|
2012-07-01 20:31:31 +02:00
|
|
|
@edit_user = @user.dup
|
|
|
|
end
|
|
|
|
|
2014-01-13 17:12:17 +01:00
|
|
|
def delete_account
|
|
|
|
if @user.try(:authenticate, params[:user][:password].to_s)
|
|
|
|
@user.delete!
|
|
|
|
reset_session
|
|
|
|
flash[:success] = "Your account has been deleted."
|
|
|
|
return redirect_to "/"
|
|
|
|
end
|
|
|
|
|
|
|
|
flash[:error] = "Your password could not be verified."
|
2015-01-03 01:33:13 +01:00
|
|
|
return redirect_to settings_path
|
2014-01-13 17:12:17 +01:00
|
|
|
end
|
|
|
|
|
2015-01-15 18:05:28 +01:00
|
|
|
def pushover
|
|
|
|
if !Pushover.SUBSCRIPTION_CODE
|
|
|
|
flash[:error] = "This site is not configured for Pushover"
|
|
|
|
return redirect_to "/settings"
|
|
|
|
end
|
|
|
|
|
|
|
|
session[:pushover_rand] = SecureRandom.hex
|
|
|
|
|
|
|
|
return redirect_to Pushover.subscription_url({
|
|
|
|
:success => "#{Rails.application.root_url}settings/pushover_callback?" <<
|
|
|
|
"rand=#{session[:pushover_rand]}",
|
|
|
|
:failure => "#{Rails.application.root_url}settings/",
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
|
|
|
def pushover_callback
|
|
|
|
if !session[:pushover_rand].to_s.present?
|
|
|
|
flash[:error] = "No random token present in session"
|
|
|
|
return redirect_to "/settings"
|
|
|
|
end
|
|
|
|
|
|
|
|
if !params[:rand].to_s.present?
|
|
|
|
flash[:error] = "No random token present in URL"
|
|
|
|
return redirect_to "/settings"
|
|
|
|
end
|
|
|
|
|
|
|
|
if params[:rand].to_s != session[:pushover_rand].to_s
|
|
|
|
raise "rand param #{params[:rand].inspect} != " <<
|
|
|
|
session[:pushover_rand].inspect
|
|
|
|
end
|
|
|
|
|
|
|
|
@user.pushover_user_key = params[:pushover_user_key].to_s
|
|
|
|
@user.save!
|
|
|
|
|
|
|
|
if @user.pushover_user_key.present?
|
|
|
|
flash[:success] = "Your account is now setup for Pushover notifications."
|
|
|
|
else
|
|
|
|
flash[:success] = "Your account is no longer setup for Pushover " <<
|
|
|
|
"notifications."
|
|
|
|
end
|
|
|
|
|
|
|
|
return redirect_to "/settings"
|
|
|
|
end
|
|
|
|
|
2012-07-01 20:31:31 +02:00
|
|
|
def update
|
|
|
|
@edit_user = @user.clone
|
|
|
|
|
2014-02-02 21:41:38 +01:00
|
|
|
if @edit_user.update_attributes(user_params)
|
2012-07-04 05:31:42 +02:00
|
|
|
flash.now[:success] = "Successfully updated settings."
|
2012-07-01 20:31:31 +02:00
|
|
|
@user = @edit_user
|
|
|
|
end
|
|
|
|
|
|
|
|
render :action => "index"
|
|
|
|
end
|
2014-02-02 21:41:38 +01:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def user_params
|
|
|
|
params.require(:user).permit(
|
|
|
|
:username, :email, :password, :password_confirmation, :about,
|
|
|
|
:email_replies, :email_messages, :email_mentions,
|
|
|
|
:pushover_replies, :pushover_messages, :pushover_mentions,
|
2015-07-31 00:56:09 +02:00
|
|
|
:mailing_list_mode, :show_avatars, :show_story_previews
|
2014-02-02 21:41:38 +01:00
|
|
|
)
|
|
|
|
end
|
2012-07-01 20:31:31 +02:00
|
|
|
end
|