diff --git a/app/controllers/users/dossiers/invites_controller.rb b/app/controllers/users/dossiers/invites_controller.rb index 35c2a4dc6..abdf89609 100644 --- a/app/controllers/users/dossiers/invites_controller.rb +++ b/app/controllers/users/dossiers/invites_controller.rb @@ -1,4 +1,12 @@ class Users::Dossiers::InvitesController < UsersController + + def authenticate_user! + session["user_return_to"] = request.fullpath + return redirect_to new_user_registration_path(user_email: params[:email]) if !params[:email].blank? && User.find_by_email(params[:email]).nil? + + super + end + def show @facade = InviteDossierFacades.new params[:id], current_user.email diff --git a/app/views/invite_mailer/invite_guest.text.erb b/app/views/invite_mailer/invite_guest.text.erb index 53f60e0b4..1e5c87712 100644 --- a/app/views/invite_mailer/invite_guest.text.erb +++ b/app/views/invite_mailer/invite_guest.text.erb @@ -4,7 +4,7 @@ L'utilisateur <%= @invite.email_sender %> souhaite que vous participiez à l'él Cette plateforme permet à ses utilisateurs d'établir des dossiers 100% en ligne et de dialoguer avec plusieurs interlocuteurs privilégiés avant d'instruire un dépot. -Afin de répondre à cette invitation, merci de vous inscrit avec l'adresse email <%= @invite.email %> sur <%= users_dossiers_invite_url(@invite.id) %>. +Afin de répondre à cette invitation, merci de vous inscrit avec l'adresse email <%= @invite.email %> sur <%= users_dossiers_invite_url(@invite.id)+"?email=#{@invite.email}" %>. Bonne journée. diff --git a/app/views/users/registrations/new.html.haml b/app/views/users/registrations/new.html.haml index 7537fa606..4e780d97f 100644 --- a/app/views/users/registrations/new.html.haml +++ b/app/views/users/registrations/new.html.haml @@ -42,7 +42,7 @@ .input-group .input-group-addon %span.glyphicon.glyphicon-user - = f.email_field :email, class: 'form-control', placeholder: 'Email' + = f.email_field :email, class: 'form-control', placeholder: 'Email', value: params[:user_email] %br %h4 = f.label :password diff --git a/spec/controllers/users/dossiers/invites_controller_spec.rb b/spec/controllers/users/dossiers/invites_controller_spec.rb new file mode 100644 index 000000000..7b7b60beb --- /dev/null +++ b/spec/controllers/users/dossiers/invites_controller_spec.rb @@ -0,0 +1,56 @@ +RSpec.describe Users::Dossiers::InvitesController, type: :controller do + + + describe '#authenticate_user!' do + let(:user) { create :user } + let(:invite) { create :invite } + + context 'when email is not set' do + context 'when user is not connected' do + before do + get :show, id: invite.id + end + + it { is_expected.to redirect_to new_user_session_path } + end + + context 'when user is connected' do + let!(:invite) { create :invite, user: user } + + before do + sign_in invite.user + + get :show, id: invite.id + end + + # it { expect(response.status).to eq 200 } + end + end + + context 'when email is set' do + before do + get :show, id: invite.id, email: email + end + + context 'when email is blank' do + let(:email) { '' } + + it { is_expected.to redirect_to new_user_session_path } + end + + context 'when email is not blank' do + context 'when email is affected at an user' do + let(:email) { user.email } + + it { is_expected.to redirect_to new_user_session_path } + end + + context 'when email is not affected at an user' do + let(:email) { 'new_user@octo.com' } + + it { is_expected.to redirect_to new_user_registration_path(user_email: email) } + end + end + end + end +end \ No newline at end of file