Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/controllers/concerns/unconfirmed_user_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def process_valid_confirmation_token
def process_unsuccessful_confirmation
@confirmation_token = params[:confirmation_token]
flash[:error] = unsuccessful_confirmation_error
redirect_to sign_up_email_resend_url(request_id: params[:_request_id])
redirect_to sign_up_register_path(request_id: params[:_request_id])
Comment thread
aduth marked this conversation as resolved.
Outdated
end

def unsuccessful_confirmation_error
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/sign_up/cancellations_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def ensure_in_setup
def ensure_valid_confirmation_token
return if @user
flash[:error] = error_message(@token_validator)
redirect_to sign_up_email_resend_url(request_id: params[:_request_id])
redirect_to sign_up_register_path(request_id: params[:_request_id])
end

def error_message(token_validator)
Expand Down
10 changes: 0 additions & 10 deletions app/controllers/sign_up/email_resend_controller.rb

This file was deleted.

3 changes: 2 additions & 1 deletion app/controllers/sign_up/emails_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ def show
@resend_confirmation = params[:resend].present?

email = session.delete(:email)
@resend_email_confirmation_form = ResendEmailConfirmationForm.new(email:)
terms_accepted = session.delete(:terms_accepted)
@resend_email_confirmation_form = ResendEmailConfirmationForm.new(email:, terms_accepted:)

render :show, locals: { email: email }
end
Expand Down
1 change: 1 addition & 0 deletions app/controllers/sign_up/registrations_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ def process_successful_creation

resend_confirmation = params[:user][:resend]
session[:email] = @register_user_email_form.email
session[:terms_accepted] = @register_user_email_form.terms_accepted
session[:sign_in_flow] = :create_account

redirect_to sign_up_verify_email_url(resend: resend_confirmation)
Expand Down
4 changes: 2 additions & 2 deletions app/forms/register_user_email_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ def digested_base_email
end

def validate_terms_accepted
return if @terms_accepted || email_address_record&.user&.accepted_terms_at.present?
return if @terms_accepted

errors.add(:terms_accepted, t('errors.registration.terms'), type: :terms)
end

def submit(params, instructions = nil)
@terms_accepted = params[:terms_accepted] == '1'
@terms_accepted = !!ActiveModel::Type::Boolean.new.cast(params[:terms_accepted])
build_user_and_email_address_with_email(
email: params[:email],
email_language: params[:email_language],
Expand Down
3 changes: 2 additions & 1 deletion app/forms/resend_email_confirmation_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
class ResendEmailConfirmationForm
include ActiveModel::Model

attr_reader :email
attr_reader :email, :terms_accepted
Comment thread
aduth marked this conversation as resolved.

def self.model_name
ActiveModel::Name.new(self, nil, 'User')
end

def initialize(params = {})
@email = params[:email]
@terms_accepted = params[:terms_accepted]
end

def resend
Expand Down
16 changes: 0 additions & 16 deletions app/views/sign_up/email_resend/new.html.erb

This file was deleted.

3 changes: 2 additions & 1 deletion app/views/sign_up/emails/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@
url: sign_up_register_path do |f| %>
<%= f.input :email, as: :hidden %>
<%= f.input :resend, as: :hidden %>
<%= f.input :terms_accepted, as: :hidden %>
<%= f.button :button, t('notices.signed_up_but_unconfirmed.resend_confirmation_email') %>
<% end %>
<% end %>
<% end %>
<% c.with_option(
url: sign_up_email_path,
).with_content(t('notices.use_diff_email.link').upcase_first) %>
Expand Down
1 change: 0 additions & 1 deletion config/locales/forms/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ en:
disable: Delete
edit: Edit
manage: Manage
resend_confirmation: Resend confirmation instructions
send_link: Send link
send_one_time_code: Send code
submit:
Expand Down
1 change: 0 additions & 1 deletion config/locales/forms/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ es:
disable: Borrar
edit: Editar
manage: Administrar
resend_confirmation: Reenviar instrucciones de confirmación
send_link: Enviar enlace
send_one_time_code: Enviar código
submit:
Expand Down
1 change: 0 additions & 1 deletion config/locales/forms/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ fr:
disable: Effacer
edit: Modifier
manage: Administrer
resend_confirmation: Envoyer les instructions de confirmation de nouveau
send_link: Envoyer le lien
send_one_time_code: Envoyer le code
submit:
Expand Down
2 changes: 0 additions & 2 deletions config/locales/headings/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ en:
phone: Add a phone number
cancellations:
prompt: Are you sure you want to cancel?
confirmations:
new: Send another confirmation email
create_account_new_users: Create an account for new users
create_account_with_sp:
sp_text: is using %{app_name} to allow you to sign in to your account safely and
Expand Down
2 changes: 0 additions & 2 deletions config/locales/headings/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ es:
phone: Agregar un número de teléfono
cancellations:
prompt: '¿Estas seguro que quieres cancelar?'
confirmations:
new: Enviar otro email de confirmación
create_account_new_users: Crear una cuenta para usuarios nuevos
create_account_with_sp:
sp_text: está utilizando %{app_name} para permitirle iniciar sesión en su cuenta
Expand Down
2 changes: 0 additions & 2 deletions config/locales/headings/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ fr:
phone: Ajouter un numéro de téléphone
cancellations:
prompt: Es-tu sûre de vouloir annuler?
confirmations:
new: Envoyer un autre courriel de confirmation
create_account_new_users: Créer un compte pour les nouveaux utilisateurs
create_account_with_sp:
sp_text: utilise %{app_name} pour vous permettre de vous connecter à votre
Expand Down
1 change: 0 additions & 1 deletion config/locales/titles/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ en:
backup_codes: Don’t lose your backup codes
confirmations:
delete: Please confirm
new: Resend confirmation instructions for your account
show: Choose a password
doc_auth:
address: Update your mailing address
Expand Down
1 change: 0 additions & 1 deletion config/locales/titles/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ es:
backup_codes: No pierda sus códigos de respaldo
confirmations:
delete: Por favor confirmar
new: Reenviar instrucciones de confirmación de su cuenta
show: Elija una contraseña
doc_auth:
address: Actualice su dirección postal
Expand Down
1 change: 0 additions & 1 deletion config/locales/titles/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ fr:
backup_codes: Ne perdez pas vos codes de sauvegarde
confirmations:
delete: Veuillez confirmer
new: Envoyer les instructions de confirmation pour votre compte
show: Choisissez un mot de passe
doc_auth:
address: Mettez à jour votre adresse postale
Expand Down
2 changes: 1 addition & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@
as: :sign_up_create_email_confirmation
get '/sign_up/enter_email' => 'sign_up/registrations#new', as: :sign_up_email
post '/sign_up/enter_email' => 'sign_up/registrations#create', as: :sign_up_register
get '/sign_up/enter_email/resend' => 'sign_up/email_resend#new', as: :sign_up_email_resend
get '/sign_up/enter_email/resend' => redirect('/sign_up/enter_email')
get '/sign_up/enter_password' => 'sign_up/passwords#new'
get '/sign_up/verify_email' => 'sign_up/emails#show', as: :sign_up_verify_email
get '/sign_up/completed' => 'sign_up/completions#show', as: :sign_up_completed
Expand Down
6 changes: 3 additions & 3 deletions spec/controllers/sign_up/cancellations_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
it 'redirects if no user is present' do
delete :destroy

expect(response).to redirect_to(sign_up_email_resend_url)
expect(response).to redirect_to(sign_up_register_path)
end

it 'redirects if user has completed sign up' do
Expand Down Expand Up @@ -68,7 +68,7 @@
delete :destroy

expect(flash[:error]).to eq t('errors.messages.confirmation_invalid_token')
expect(response).to redirect_to(sign_up_email_resend_url)
expect(response).to redirect_to(sign_up_register_path)
end

it 'redirects if confirmation_token is expired' do
Expand All @@ -89,7 +89,7 @@
subject.session[:user_confirmation_token] = confirmation_token

delete :destroy
expect(response).to redirect_to(sign_up_email_resend_url)
expect(response).to redirect_to(sign_up_register_path)
expect(flash[:error]).to eq t('errors.messages.confirmation_period_expired')
end

Expand Down
12 changes: 6 additions & 6 deletions spec/controllers/sign_up/email_confirmations_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
get :create, params: { confirmation_token: nil }

expect(flash[:error]).to eq t('errors.messages.confirmation_invalid_token')
expect(response).to redirect_to sign_up_email_resend_path
expect(response).to redirect_to sign_up_register_path
end

it 'tracks blank email confirmation token' do
Expand All @@ -47,7 +47,7 @@
get :create, params: { confirmation_token: '' }

expect(flash[:error]).to eq t('errors.messages.confirmation_invalid_token')
expect(response).to redirect_to sign_up_email_resend_path
expect(response).to redirect_to sign_up_register_path
end

it 'tracks confirmation token as a single-quoted empty string' do
Expand All @@ -61,7 +61,7 @@
get :create, params: { confirmation_token: "''" }

expect(flash[:error]).to eq t('errors.messages.confirmation_invalid_token')
expect(response).to redirect_to sign_up_email_resend_path
expect(response).to redirect_to sign_up_register_path
end

it 'tracks confirmation token as a double-quoted empty string' do
Expand All @@ -75,7 +75,7 @@
get :create, params: { confirmation_token: '""' }

expect(flash[:error]).to eq t('errors.messages.confirmation_invalid_token')
expect(response).to redirect_to sign_up_email_resend_path
expect(response).to redirect_to sign_up_register_path
end

it 'tracks already confirmed token' do
Expand Down Expand Up @@ -128,7 +128,7 @@
get :create, params: { confirmation_token: 'foo' }

expect(flash[:error]).to eq t('errors.messages.confirmation_period_expired')
expect(response).to redirect_to sign_up_email_resend_path
expect(response).to redirect_to sign_up_register_path
end

it 'tracks blank confirmation_sent_at as expired token' do
Expand Down Expand Up @@ -159,7 +159,7 @@
get :create, params: { confirmation_token: 'foo' }

expect(flash[:error]).to eq t('errors.messages.confirmation_period_expired')
expect(response).to redirect_to sign_up_email_resend_path
expect(response).to redirect_to sign_up_register_path
end

describe 'sp metadata' do
Expand Down
4 changes: 2 additions & 2 deletions spec/controllers/sign_up/passwords_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@
user.reload
expect(user.valid_password?(password)).to eq false
expect(user.confirmed?).to eq false
expect(response).to redirect_to(sign_up_email_resend_url)
expect(response).to redirect_to(sign_up_register_path)
end
end
end
Expand All @@ -181,7 +181,7 @@
)

get :new, params: { confirmation_token: token }
expect(response).to redirect_to(sign_up_email_resend_url)
expect(response).to redirect_to(sign_up_register_path)
end
end
end
3 changes: 2 additions & 1 deletion spec/features/accessibility/user_pages_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@
scenario 'invalid confirmation token' do
visit sign_up_create_email_confirmation_path(confirmation_token: '123456')

expect(current_path).to eq(sign_up_email_resend_path)
expect(current_path).to eq(sign_up_register_path)
expect(page).to have_content(t('errors.messages.confirmation_invalid_token'))
expect_page_to_have_no_accessibility_violations(page)
end
end
Expand Down
2 changes: 1 addition & 1 deletion spec/features/users/sign_up_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ def clipboard_text
it 'returns them to the resend email confirmation page' do
visit sign_up_enter_password_path(confirmation_token: 'foo', request_id: 'bar')

expect(page).to have_current_path(sign_up_email_resend_path)
expect(page).to have_current_path(sign_up_register_path)

expect(page).
to have_content t('errors.messages.confirmation_invalid_token')
Expand Down
16 changes: 16 additions & 0 deletions spec/features/visitors/email_confirmation_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,22 @@
require 'rails_helper'

RSpec.feature 'Email confirmation during sign up', allowed_extra_analytics: [:*] do
it 'requires user to accept rules of use when registering email' do
visit sign_up_email_path
fill_in t('forms.registration.labels.email'), with: 'test@example.com'
click_submit_default

expect(page).to have_current_path(sign_up_email_path)
expect(page).to have_content(t('errors.registration.terms'))

fill_in t('forms.registration.labels.email'), with: 'test@example.com'
check t('sign_up.terms', app_name: APP_NAME)
click_submit_default

expect(page).to have_current_path(sign_up_verify_email_url)
expect(page).not_to have_content(t('errors.registration.terms'))
end

scenario 'confirms valid email and sets valid password' do
reset_email
email = 'test@example.com'
Expand Down
5 changes: 3 additions & 2 deletions spec/features/visitors/password_recovery_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,10 @@
user = create(:user, :unconfirmed)
confirm_last_user
reset_email
visit sign_up_email_resend_path
visit sign_up_email_path
fill_in t('forms.registration.labels.email'), with: user.email
click_button t('forms.buttons.resend_confirmation')
check t('sign_up.terms', app_name: APP_NAME)
click_submit_default
open_last_email
click_email_link_matching(/confirmation_token/)
end
Expand Down
Loading