From c73064a70ac55b44aea6f907dc3970f87603ea8d Mon Sep 17 00:00:00 2001 From: farhatahmad <35435341+farhatahmad@users.noreply.github.com> Date: Fri, 1 Feb 2019 15:00:10 -0500 Subject: [PATCH] GRN-45: Fixed the URL being sent in the password reset email (#351) * Fixed the url used in the reset password emails and added the ability to preview emails in the dev environment * Replaced localhost with example.com in email previews * Update password_reset.html.erb --- app/controllers/password_resets_controller.rb | 6 +++++- app/views/user_mailer/password_reset.html.erb | 2 +- app/views/user_mailer/password_reset.text.erb | 2 +- test/mailers/previews/user_mailer_preview.rb | 16 ++++++++++++++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/controllers/password_resets_controller.rb b/app/controllers/password_resets_controller.rb index e3a8af34..d315e3f5 100644 --- a/app/controllers/password_resets_controller.rb +++ b/app/controllers/password_resets_controller.rb @@ -29,7 +29,7 @@ class PasswordResetsController < ApplicationController @user = User.find_by(email: params[:password_reset][:email].downcase) if @user @user.create_reset_digest - @user.send_password_reset_email(request.base_url) + @user.send_password_reset_email(reset_link) redirect_to root_url, notice: I18n.t("email_sent") else redirect_to new_password_reset_path, notice: I18n.t("no_user_email_exists") @@ -77,6 +77,10 @@ class PasswordResetsController < ApplicationController end end + def reset_link + request.base_url + edit_password_reset_path(@user.reset_token, email: @user.email) + end + # Confirms a valid user. def valid_user unless current_user&.email_verified && current_user.authenticated?(:reset, params[:id]) diff --git a/app/views/user_mailer/password_reset.html.erb b/app/views/user_mailer/password_reset.html.erb index 5e343e3d..10d5f34e 100644 --- a/app/views/user_mailer/password_reset.html.erb +++ b/app/views/user_mailer/password_reset.html.erb @@ -31,7 +31,7 @@ + href="<%= @url %>"> Reset Password diff --git a/app/views/user_mailer/password_reset.text.erb b/app/views/user_mailer/password_reset.text.erb index 6a45a7c0..e219a5b6 100644 --- a/app/views/user_mailer/password_reset.text.erb +++ b/app/views/user_mailer/password_reset.text.erb @@ -21,7 +21,7 @@ Password Reset It seems like you forgot your password for <%= t('bigbluebutton') %> If this is true, please click the link below to reset your password: -<%= edit_password_reset_url(@user.reset_token,email: @user.email, host: @url) %> +<%= @url %> This link will expire in two hours. diff --git a/test/mailers/previews/user_mailer_preview.rb b/test/mailers/previews/user_mailer_preview.rb index 18cef94f..00554969 100644 --- a/test/mailers/previews/user_mailer_preview.rb +++ b/test/mailers/previews/user_mailer_preview.rb @@ -1,4 +1,20 @@ # frozen_string_literal: true class UserMailerPreview < ActionMailer::Preview + # Preview this email at + # http://localhost:3000/rails/mailers/user_mailer/password_reset + def password_reset + user = User.first + user.reset_token = User.new_token + url = "http://example.com" + "/password_resets/" + user.reset_token + "/edit?email=" + user.email + UserMailer.password_reset(user, url) + end + + # Preview this email at + # http://localhost:3000/rails/mailers/user_mailer/verify_email + def verify_email + user = User.first + url = "http://example.com" + "/u/verify/confirm/" + user.uid + UserMailer.verify_email(user, url) + end end