8c44b723bb
Clicking the confirmation link multiple times currently leads to entering account settings, which can be confusing. This commit changes that so that it redirects to the root path, so it behaves the same way as clicking only once in most cases.
48 lines
1.1 KiB
Ruby
48 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class Auth::ConfirmationsController < Devise::ConfirmationsController
|
|
layout 'auth'
|
|
|
|
before_action :set_body_classes
|
|
before_action :require_unconfirmed!
|
|
|
|
skip_before_action :require_functional!
|
|
|
|
def new
|
|
super
|
|
|
|
resource.email = current_user.unconfirmed_email || current_user.email if user_signed_in?
|
|
end
|
|
|
|
private
|
|
|
|
def require_unconfirmed!
|
|
if user_signed_in? && current_user.confirmed? && current_user.unconfirmed_email.blank?
|
|
redirect_to(current_user.approved? ? root_path : edit_user_registration_path)
|
|
end
|
|
end
|
|
|
|
def set_body_classes
|
|
@body_classes = 'lighter'
|
|
end
|
|
|
|
def after_resending_confirmation_instructions_path_for(_resource_name)
|
|
if user_signed_in?
|
|
if current_user.confirmed? && current_user.approved?
|
|
edit_user_registration_path
|
|
else
|
|
auth_setup_path
|
|
end
|
|
else
|
|
new_user_session_path
|
|
end
|
|
end
|
|
|
|
def after_confirmation_path_for(_resource_name, user)
|
|
if user.created_by_application && truthy_param?(:redirect_to_app)
|
|
user.created_by_application.redirect_uri
|
|
else
|
|
super
|
|
end
|
|
end
|
|
end
|