diff options
author | Jenkins <jenkins@jenkins.ninjawedding.org> | 2018-04-11 00:50:09 +0000 |
---|---|---|
committer | Jenkins <jenkins@jenkins.ninjawedding.org> | 2018-04-11 00:50:09 +0000 |
commit | 33c2bbdda7f94789dc0455711093ee788c64a531 (patch) | |
tree | caced55ea5ede3baa6e13cf15d8a869121dd3d4f /app/controllers/admin/change_emails_controller.rb | |
parent | 67e77f230e93b2e2ac05632a7cccdb5f26537f3b (diff) | |
parent | d9b62e34da0c0238176f27557ac7b953da94df7e (diff) |
Merge remote-tracking branch 'tootsuite/master' into glitchsoc/master
Diffstat (limited to 'app/controllers/admin/change_emails_controller.rb')
-rw-r--r-- | app/controllers/admin/change_emails_controller.rb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/app/controllers/admin/change_emails_controller.rb b/app/controllers/admin/change_emails_controller.rb new file mode 100644 index 000000000..a689d3a53 --- /dev/null +++ b/app/controllers/admin/change_emails_controller.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +module Admin + class ChangeEmailsController < BaseController + before_action :set_account + before_action :require_local_account! + + def show + authorize @user, :change_email? + end + + def update + authorize @user, :change_email? + + new_email = resource_params.fetch(:unconfirmed_email) + + if new_email != @user.email + @user.update!( + unconfirmed_email: new_email, + # Regenerate the confirmation token: + confirmation_token: nil + ) + + log_action :change_email, @user + + @user.send_confirmation_instructions + end + + redirect_to admin_account_path(@account.id), notice: I18n.t('admin.accounts.change_email.changed_msg') + end + + private + + def set_account + @account = Account.find(params[:account_id]) + @user = @account.user + end + + def require_local_account! + redirect_to admin_account_path(@account.id) unless @account.local? && @account.user.present? + end + + def resource_params + params.require(:user).permit( + :unconfirmed_email + ) + end + end +end |