In general, we always use relative URLs (using `_path`), but sometimes we were accidentally using absolute URLs (using `_url`). It's been reported i might cause some isuses if accepting both HTTP and HTTPS connections, although we've never seen the case. In any case, this change makes the code more consistent and makes the generated HTML cleaner.
81 lines
2.2 KiB
Ruby
81 lines
2.2 KiB
Ruby
class Users::RegistrationsController < Devise::RegistrationsController
|
|
prepend_before_action :authenticate_scope!, only: [:edit, :update, :destroy, :finish_signup, :do_finish_signup]
|
|
before_action :configure_permitted_parameters
|
|
|
|
invisible_captcha only: [:create], honeypot: :address, scope: :user
|
|
|
|
def new
|
|
super do |user|
|
|
user.use_redeemable_code = true if params[:use_redeemable_code].present?
|
|
end
|
|
end
|
|
|
|
def create
|
|
build_resource(sign_up_params)
|
|
if resource.valid?
|
|
super
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def delete_form
|
|
build_resource({})
|
|
end
|
|
|
|
def delete
|
|
current_user.erase(erase_params[:erase_reason])
|
|
sign_out
|
|
redirect_to root_path, notice: t("devise.registrations.destroyed")
|
|
end
|
|
|
|
def success
|
|
end
|
|
|
|
def finish_signup
|
|
current_user.registering_with_oauth = false
|
|
current_user.email = current_user.oauth_email if current_user.email.blank?
|
|
current_user.validate
|
|
end
|
|
|
|
def do_finish_signup
|
|
current_user.registering_with_oauth = false
|
|
if current_user.update(sign_up_params)
|
|
current_user.send_oauth_confirmation_instructions
|
|
sign_in_and_redirect current_user, event: :authentication
|
|
else
|
|
render :finish_signup
|
|
end
|
|
end
|
|
|
|
def check_username
|
|
if User.find_by username: params[:username]
|
|
render json: { available: false, message: t("devise_views.users.registrations.new.username_is_not_available") }
|
|
else
|
|
render json: { available: true, message: t("devise_views.users.registrations.new.username_is_available") }
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def sign_up_params
|
|
params[:user].delete(:redeemable_code) if params[:user].present? && params[:user][:redeemable_code].blank?
|
|
params.require(:user).permit(:username, :email, :password,
|
|
:password_confirmation, :terms_of_service, :locale,
|
|
:redeemable_code)
|
|
end
|
|
|
|
def configure_permitted_parameters
|
|
devise_parameter_sanitizer.permit(:account_update, keys: [:email])
|
|
end
|
|
|
|
def erase_params
|
|
params.require(:user).permit(:erase_reason)
|
|
end
|
|
|
|
def after_inactive_sign_up_path_for(resource_or_scope)
|
|
users_sign_up_success_path
|
|
end
|
|
|
|
end
|