diff options
author | Reverite <github@reverite.sh> | 2019-07-23 20:54:15 -0700 |
---|---|---|
committer | Reverite <github@reverite.sh> | 2019-07-23 20:54:15 -0700 |
commit | fee3abd1dce8f437e3514cb03816ae50862b3c4c (patch) | |
tree | 72e19e9e748edce7024737cfb70f9088346058bd /app/controllers/auth/setup_controller.rb | |
parent | 9148c3e8479e59df9f9a4889ef58a959f60f6606 (diff) | |
parent | 08325db62bcc4d5d530513c615bc1c733f166239 (diff) |
Merge branch 'glitch' into production
Diffstat (limited to 'app/controllers/auth/setup_controller.rb')
-rw-r--r-- | app/controllers/auth/setup_controller.rb | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/app/controllers/auth/setup_controller.rb b/app/controllers/auth/setup_controller.rb new file mode 100644 index 000000000..46c5f2958 --- /dev/null +++ b/app/controllers/auth/setup_controller.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +class Auth::SetupController < ApplicationController + layout 'auth' + + before_action :authenticate_user! + before_action :require_unconfirmed_or_pending! + before_action :set_body_classes + before_action :set_user + + skip_before_action :require_functional! + + def show + flash.now[:notice] = begin + if @user.pending? + I18n.t('devise.registrations.signed_up_but_pending') + else + I18n.t('devise.registrations.signed_up_but_unconfirmed') + end + end + end + + def update + # This allows updating the e-mail without entering a password as is required + # on the account settings page; however, we only allow this for accounts + # that were not confirmed yet + + if @user.update(user_params) + redirect_to auth_setup_path, notice: I18n.t('devise.confirmations.send_instructions') + else + render :show + end + end + + helper_method :missing_email? + + private + + def require_unconfirmed_or_pending! + redirect_to root_path if current_user.confirmed? && current_user.approved? + end + + def set_user + @user = current_user + end + + def set_body_classes + @body_classes = 'lighter' + end + + def user_params + params.require(:user).permit(:email) + end + + def missing_email? + truthy_param?(:missing_email) + end +end |