Commit 2293a29e authored by Alex Kalderimis's avatar Alex Kalderimis

Merge branch '232885-experiment-default-invited-users-to-the-activity-page' into 'master'

Redirect to activity page when accepting invitation [RUN ALL RSPEC] [RUN AS-IF-FOSS]

See merge request gitlab-org/gitlab!56695
parents 08ee202d 5f5e13f8
...@@ -26,8 +26,7 @@ class InvitesController < ApplicationController ...@@ -26,8 +26,7 @@ class InvitesController < ApplicationController
experiment('members/invite_email', actor: member).track(:accepted) if initial_invite_email? experiment('members/invite_email', actor: member).track(:accepted) if initial_invite_email?
session.delete(:invite_type) session.delete(:invite_type)
redirect_to invite_details[:path], notice: _("You have been granted %{member_human_access} access to %{title} %{name}.") % redirect_to invite_details[:path], notice: helpers.invite_accepted_notice(member)
{ member_human_access: member.human_access, title: invite_details[:title], name: invite_details[:name] }
else else
redirect_back_or_default(options: { alert: _("The invitation could not be accepted.") }) redirect_back_or_default(options: { alert: _("The invitation could not be accepted.") })
end end
...@@ -91,7 +90,7 @@ class InvitesController < ApplicationController ...@@ -91,7 +90,7 @@ class InvitesController < ApplicationController
def authenticate_user! def authenticate_user!
return if current_user return if current_user
store_location_for :user, request.fullpath store_location_for(:user, invite_landing_url) if member
if user_sign_up? if user_sign_up?
redirect_to new_user_registration_path(invite_email: member.invite_email), notice: _("To accept this invitation, create an account or sign in.") redirect_to new_user_registration_path(invite_email: member.invite_email), notice: _("To accept this invitation, create an account or sign in.")
...@@ -116,6 +115,10 @@ class InvitesController < ApplicationController ...@@ -116,6 +115,10 @@ class InvitesController < ApplicationController
end end
end end
def invite_landing_url
root_url + invite_details[:path]
end
def invite_details def invite_details
@invite_details ||= case member.source @invite_details ||= case member.source
when Project when Project
...@@ -123,14 +126,14 @@ class InvitesController < ApplicationController ...@@ -123,14 +126,14 @@ class InvitesController < ApplicationController
name: member.source.full_name, name: member.source.full_name,
url: project_url(member.source), url: project_url(member.source),
title: _("project"), title: _("project"),
path: project_path(member.source) path: activity_project_path(member.source)
} }
when Group when Group
{ {
name: member.source.name, name: member.source.name,
url: group_url(member.source), url: group_url(member.source),
title: _("group"), title: _("group"),
path: group_path(member.source) path: activity_group_path(member.source)
} }
end end
end end
......
...@@ -18,7 +18,11 @@ module Registrations ...@@ -18,7 +18,11 @@ module Registrations
if result[:status] == :success if result[:status] == :success
return redirect_to new_users_sign_up_group_path if show_signup_onboarding? return redirect_to new_users_sign_up_group_path if show_signup_onboarding?
redirect_to path_for_signed_in_user(current_user) if current_user.members.count == 1
redirect_to path_for_signed_in_user(current_user), notice: helpers.invite_accepted_notice(current_user.members.last)
else
redirect_to path_for_signed_in_user(current_user)
end
else else
render :show render :show
end end
...@@ -48,7 +52,20 @@ module Registrations ...@@ -48,7 +52,20 @@ module Registrations
def path_for_signed_in_user(user) def path_for_signed_in_user(user)
return users_almost_there_path if requires_confirmation?(user) return users_almost_there_path if requires_confirmation?(user)
stored_location_for(user) || dashboard_projects_path stored_location_for(user) || members_activity_path(user)
end
def members_activity_path(user)
return dashboard_projects_path unless user.members.count >= 1
case user.members.last.source
when Project
activity_project_path(user.members.last.source)
when Group
activity_group_path(user.members.last.source)
else
dashboard_projects_path
end
end end
def show_signup_onboarding? def show_signup_onboarding?
......
...@@ -46,6 +46,17 @@ module InviteMembersHelper ...@@ -46,6 +46,17 @@ module InviteMembersHelper
end end
end end
def invite_accepted_notice(member)
case member.source
when Project
_("You have been granted %{member_human_access} access to project %{name}.") %
{ member_human_access: member.human_access, name: member.source.name }
when Group
_("You have been granted %{member_human_access} access to group %{name}.") %
{ member_human_access: member.human_access, name: member.source.name }
end
end
private private
def invite_members_url(form_model) def invite_members_url(form_model)
......
---
title: Redirect to activity page when accepting invitation
merge_request: 56695
author:
type: changed
...@@ -36195,7 +36195,10 @@ msgstr "" ...@@ -36195,7 +36195,10 @@ msgstr ""
msgid "You have been granted %{access_level} access to the %{source_name} %{source_type}." msgid "You have been granted %{access_level} access to the %{source_name} %{source_type}."
msgstr "" msgstr ""
msgid "You have been granted %{member_human_access} access to %{title} %{name}." msgid "You have been granted %{member_human_access} access to group %{name}."
msgstr ""
msgid "You have been granted %{member_human_access} access to project %{name}."
msgstr "" msgstr ""
msgid "You have been invited" msgid "You have been invited"
......
...@@ -64,13 +64,12 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do ...@@ -64,13 +64,12 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
expect(find_field('Email').value).to eq(group_invite.invite_email) expect(find_field('Email').value).to eq(group_invite.invite_email)
end end
it 'sign in, grants access and redirects to group page' do it 'sign in, grants access and redirects to group activity page' do
click_link 'Sign in' click_link 'Sign in'
fill_in_sign_in_form(user) fill_in_sign_in_form(user)
expect(current_path).to eq(group_path(group)) expect(current_path).to eq(activity_group_path(group))
expect(page).to have_content('You have been granted Developer access to group Owned.')
end end
end end
...@@ -117,26 +116,28 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do ...@@ -117,26 +116,28 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
context 'email confirmation disabled' do context 'email confirmation disabled' do
let(:send_email_confirmation) { false } let(:send_email_confirmation) { false }
it 'signs up and redirects to the dashboard page with all the projects/groups invitations automatically accepted' do it 'signs up and redirects to the most recent membership activity page with all the projects/groups invitations automatically accepted' do
fill_in_sign_up_form(new_user) fill_in_sign_up_form(new_user)
fill_in_welcome_form fill_in_welcome_form
expect(current_path).to eq(dashboard_projects_path) expect(current_path).to eq(activity_group_path(group))
expect(page).to have_content(project.full_name) expect(page).to have_content('You have been granted Owner access to group Owned.')
visit group_path(group) visit group_path(group)
expect(page).to have_content(group.full_name) expect(page).to have_content(group.full_name)
visit project_path(project)
expect(page).to have_content(project.name)
end end
context 'the user sign-up using a different email address' do context 'the user sign-up using a different email address' do
let(:invite_email) { build_stubbed(:user).email } let(:invite_email) { build_stubbed(:user).email }
it 'signs up and redirects to the invitation page' do it 'signs up and redirects to the activity page' do
fill_in_sign_up_form(new_user) fill_in_sign_up_form(new_user)
fill_in_welcome_form fill_in_welcome_form
expect(current_path).to eq(invite_path(group_invite.raw_invite_token)) expect(current_path).to eq(activity_group_path(group))
end end
end end
end end
...@@ -207,7 +208,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do ...@@ -207,7 +208,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
fill_in_sign_in_form(new_user) fill_in_sign_in_form(new_user)
fill_in_welcome_form fill_in_welcome_form
expect(current_path).to eq(invite_path(group_invite.raw_invite_token)) expect(current_path).to eq(activity_group_path(group))
end end
end end
...@@ -221,7 +222,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do ...@@ -221,7 +222,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
fill_in_sign_up_form(new_user) fill_in_sign_up_form(new_user)
fill_in_welcome_form fill_in_welcome_form
expect(current_path).to eq(invite_path(group_invite.raw_invite_token)) expect(current_path).to eq(activity_group_path(group))
end end
end end
end end
...@@ -273,7 +274,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do ...@@ -273,7 +274,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
end end
end end
context 'when accepting the invitation' do context 'when accepting the invitation as an existing user' do
let(:send_email_confirmation) { true } let(:send_email_confirmation) { true }
before do before do
...@@ -286,7 +287,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do ...@@ -286,7 +287,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do
page.click_link 'Accept invitation' page.click_link 'Accept invitation'
expect(current_path).to eq(group_path(group)) expect(current_path).to eq(activity_group_path(group))
expect(page).to have_content('You have been granted Owner access to group Owned.') expect(page).to have_content('You have been granted Owner access to group Owned.')
expect(group.users.include?(user)).to be true expect(group.users.include?(user)).to be true
end end
......
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