Files
grecia/app/controllers/users/registrations_controller.rb
Javi Martín 27468b0b7b Use relative URLs where possible
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.
2019-10-20 17:26:14 +02:00

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