add missing pushover section

This commit is contained in:
Carl Chenet 2017-05-20 13:40:52 +02:00
parent 52fb11b7e4
commit 264fa14f03

View file

@ -21,49 +21,6 @@ class SettingsController < ApplicationController
return redirect_to settings_path
end
def pushover
if !Pushover.SUBSCRIPTION_CODE
flash[:error] = t('.pushovernotconfigured')
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] = t('.pushovernorandomtokensession')
return redirect_to "/settings"
end
if !params[:rand].to_s.present?
flash[:error] = t('.pushovernorandomtokenurl')
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] = t('.accountsetuppushover')
else
flash[:success] = t('.accountnolongersetuppushover')
end
return redirect_to "/settings"
end
def update
@edit_user = @user.clone
@ -160,6 +117,88 @@ class SettingsController < ApplicationController
end
end
# external services
def pushover_auth
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
def github_auth
session[:github_state] = SecureRandom.hex
return redirect_to Github.oauth_auth_url(session[:github_state])
end
def github_callback
if !session[:github_state].present? || !params[:code].present? ||
(params[:state].to_s != session[:github_state].to_s)
flash[:error] = "No OAuth state"
return redirect_to "/settings"
end
session.delete(:github_state)
tok, username = Github.token_and_user_from_code(params[:code])
if tok.present? && username.present?
@user.github_oauth_token = tok
@user.github_username = username
@user.save!
flash[:success] = "Your account has been linked to GitHub user " <<
"#{username}."
else
return github_disconnect
end
return redirect_to "/settings"
end
def github_disconnect
@user.github_oauth_token = nil
@user.github_username = nil
@user.save!
flash[:success] = "Your GitHub association has been removed."
return redirect_to "/settings"
end
private
def user_params