diff options
Diffstat (limited to 'app/controllers/auth/confirmations_controller.rb')
-rw-r--r-- | app/controllers/auth/confirmations_controller.rb | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/app/controllers/auth/confirmations_controller.rb b/app/controllers/auth/confirmations_controller.rb index eade82e36..4e89446c7 100644 --- a/app/controllers/auth/confirmations_controller.rb +++ b/app/controllers/auth/confirmations_controller.rb @@ -4,19 +4,15 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController layout 'auth' before_action :set_body_classes - before_action :set_user, only: [:finish_signup] before_action :set_pack + before_action :require_unconfirmed! - def finish_signup - return unless request.patch? && params[:user] + skip_before_action :require_functional! - if @user.update(user_params) - @user.skip_reconfirmation! - bypass_sign_in(@user) - redirect_to root_path, notice: I18n.t('devise.confirmations.send_instructions') - else - @show_errors = true - end + def new + super + + resource.email = current_user.unconfirmed_email || current_user.email if user_signed_in? end private @@ -25,16 +21,24 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController use_pack 'auth' end - def set_user - @user = current_user + def require_unconfirmed! + redirect_to edit_user_registration_path if user_signed_in? && current_user.confirmed? && current_user.unconfirmed_email.blank? end def set_body_classes @body_classes = 'lighter' end - def user_params - params.require(:user).permit(:email) + 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) |