Commit 13e6c289 authored by Jackie Fraser's avatar Jackie Fraser

Pre-fill the invite-email on signin/register pages

parent 85615696
...@@ -75,7 +75,7 @@ class InvitesController < ApplicationController ...@@ -75,7 +75,7 @@ class InvitesController < ApplicationController
notice = notice.join(' ') + "." notice = notice.join(' ') + "."
store_location_for :user, request.fullpath store_location_for :user, request.fullpath
redirect_to new_user_session_path, notice: notice redirect_to new_user_session_path(invite_email: member.invite_email), notice: notice
end end
def invite_details def invite_details
......
...@@ -25,6 +25,7 @@ class SessionsController < Devise::SessionsController ...@@ -25,6 +25,7 @@ class SessionsController < Devise::SessionsController
before_action :store_unauthenticated_sessions, only: [:new] before_action :store_unauthenticated_sessions, only: [:new]
before_action :save_failed_login, if: :action_new_and_failed_login? before_action :save_failed_login, if: :action_new_and_failed_login?
before_action :load_recaptcha before_action :load_recaptcha
before_action :set_invite_params, only: [:new]
after_action :log_failed_login, if: :action_new_and_failed_login? after_action :log_failed_login, if: :action_new_and_failed_login?
after_action :verify_known_sign_in, only: [:create] after_action :verify_known_sign_in, only: [:create]
...@@ -291,6 +292,10 @@ class SessionsController < Devise::SessionsController ...@@ -291,6 +292,10 @@ class SessionsController < Devise::SessionsController
"standard" "standard"
end end
end end
def set_invite_params
@invite_email = ActionController::Base.helpers.sanitize(params[:invite_email])
end
end end
SessionsController.prepend_if_ee('EE::SessionsController') SessionsController.prepend_if_ee('EE::SessionsController')
= form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: 'new_user gl-show-field-errors', 'aria-live' => 'assertive'}) do |f| = form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: 'new_user gl-show-field-errors', 'aria-live' => 'assertive'}) do |f|
.form-group .form-group
= f.label _('Username or email'), for: 'user_login', class: 'label-bold' = f.label _('Username or email'), for: 'user_login', class: 'label-bold'
= f.text_field :login, class: 'form-control top', autofocus: 'autofocus', autocapitalize: 'off', autocorrect: 'off', required: true, title: _('This field is required.'), data: { qa_selector: 'login_field' } = f.text_field :login, value: @invite_email, class: 'form-control top', autofocus: 'autofocus', autocapitalize: 'off', autocorrect: 'off', required: true, title: _('This field is required.'), data: { qa_selector: 'login_field' }
.form-group .form-group
= f.label :password, class: 'label-bold' = f.label :password, class: 'label-bold'
= f.password_field :password, class: 'form-control bottom', required: true, title: _('This field is required.'), data: { qa_selector: 'password_field' } = f.password_field :password, class: 'form-control bottom', required: true, title: _('This field is required.'), data: { qa_selector: 'password_field' }
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
%p.validation-pending.gl-field-error-ignore.field-validation.hide= _('Checking username availability...') %p.validation-pending.gl-field-error-ignore.field-validation.hide= _('Checking username availability...')
.form-group .form-group
= f.label :email, class: 'label-bold' = f.label :email, class: 'label-bold'
= f.email_field :email, class: "form-control middle", data: { qa_selector: 'new_user_email_field' }, required: true, title: _("Please provide a valid email address.") = f.email_field :email, value: @invite_email, class: "form-control middle", data: { qa_selector: 'new_user_email_field' }, required: true, title: _("Please provide a valid email address.")
.form-group .form-group
= f.label :email_confirmation, class: 'label-bold' = f.label :email_confirmation, class: 'label-bold'
= f.email_field :email_confirmation, class: "form-control middle", data: { qa_selector: 'new_user_email_confirmation_field' }, required: true, title: _("Please retype the email address.") = f.email_field :email_confirmation, class: "form-control middle", data: { qa_selector: 'new_user_email_confirmation_field' }, required: true, title: _("Please retype the email address.")
......
---
title: Pre-fill the email input on sign-in / sign up pages
merge_request: 33851
author:
type: changed
...@@ -48,6 +48,14 @@ RSpec.describe 'Invites', :aggregate_failures do ...@@ -48,6 +48,14 @@ RSpec.describe 'Invites', :aggregate_failures do
expect(page).to have_content('To accept this invitation, sign in') expect(page).to have_content('To accept this invitation, sign in')
end end
it 'pre-fills the "Username or email" field on the sign in box with the invite_email from the invite' do
expect(find_field('Username or email').value).to eq(group_invite.invite_email)
end
it 'pre-fills the Email field on the sign up box with the invite_email from the invite' do
expect(find_field('Email').value).to eq(group_invite.invite_email)
end
it 'sign in, grants access and redirects to group page' do it 'sign in, grants access and redirects to group page' do
fill_in_sign_in_form(user) fill_in_sign_in_form(user)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment