Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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_url(request_id: params[:_request_id])
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_url(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

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_url)
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_url)
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_url)
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_url
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_url
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_url
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_url
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_url
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_url
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_url)
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_url)
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