diff options
Diffstat (limited to 'app/controllers/settings/emails_controller.rb')
-rw-r--r-- | app/controllers/settings/emails_controller.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/app/controllers/settings/emails_controller.rb b/app/controllers/settings/emails_controller.rb new file mode 100644 index 00000000000..37c9780c3a6 --- /dev/null +++ b/app/controllers/settings/emails_controller.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +class Settings::EmailsController < Settings::ApplicationController + before_action :find_email, only: [:destroy, :resend_confirmation_instructions] + + def index + @primary_email = current_user.email + @emails = current_user.emails.order_id_desc + end + + def create + @email = Emails::CreateService.new(current_user, email_params.merge(user: current_user)).execute + unless @email.errors.blank? + flash[:alert] = @email.errors.full_messages.first + end + + redirect_to settings_emails_url + end + + def destroy + Emails::DestroyService.new(current_user, user: current_user).execute(@email) + + respond_to do |format| + format.html { redirect_to settings_emails_url, status: :found } + format.js { head :ok } + end + end + + def resend_confirmation_instructions + if Emails::ConfirmService.new(current_user, user: current_user).execute(@email) + flash[:notice] = _("Confirmation email sent to %{email}") % { email: @email.email } + else + flash[:alert] = _("There was a problem sending the confirmation email") + end + + redirect_to settings_emails_url + end + + private + + def email_params + params.require(:email).permit(:email) + end + + def find_email + @email = current_user.emails.find(params[:id]) + end +end |