FIX: Better error message for redeemed invite (#12580)

This commit improves the error message when a user tries to redeem a
completely redeemed invite link.
This commit is contained in:
Dan Ungureanu 2021-04-02 11:11:07 +03:00 committed by GitHub
parent cc2eb6e7b3
commit 81e5352e01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 2 deletions

View File

@ -52,7 +52,11 @@ class InvitesController < ApplicationController
flash.now[:error] = if invite.blank? flash.now[:error] = if invite.blank?
I18n.t('invite.not_found', base_url: Discourse.base_url) I18n.t('invite.not_found', base_url: Discourse.base_url)
elsif invite.redeemed? elsif invite.redeemed?
I18n.t('invite.not_found_template', site_name: SiteSetting.title, base_url: Discourse.base_url) if invite.is_invite_link?
I18n.t('invite.not_found_template_link', site_name: SiteSetting.title, base_url: Discourse.base_url)
else
I18n.t('invite.not_found_template', site_name: SiteSetting.title, base_url: Discourse.base_url)
end
elsif invite.expired? elsif invite.expired?
I18n.t('invite.expired', base_url: Discourse.base_url) I18n.t('invite.expired', base_url: Discourse.base_url)
end end

View File

@ -236,6 +236,8 @@ en:
<p>If you remember your password you can <a href="%{base_url}/login">Log In</a>.</p> <p>If you remember your password you can <a href="%{base_url}/login">Log In</a>.</p>
<p>Otherwise please <a href="%{base_url}/password-reset">Reset Password</a>.</p> <p>Otherwise please <a href="%{base_url}/password-reset">Reset Password</a>.</p>
not_found_template_link: |
<p>The invitation to <a href="%{base_url}">%{site_name}</a> can no longer be redeemed. Please ask the person who invited you to send you a new invitation.</p>
error_message: "There was an error accepting invite. Please contact the site's administrator." error_message: "There was an error accepting invite. Please contact the site's administrator."
user_exists: "There's no need to invite <b>%{email}</b>, they <a href='%{base_path}/u/%{username}/summary'>already have an account!</a>" user_exists: "There's no need to invite <b>%{email}</b>, they <a href='%{base_path}/u/%{username}/summary'>already have an account!</a>"
confirm_email: "<p>Youre almost done! We sent an activation mail to your email address. Please follow the instructions in the mail to activate your account.</p><p>If it doesnt arrive, check your spam folder.</p>" confirm_email: "<p>Youre almost done! We sent an activation mail to your email address. Please follow the instructions in the mail to activate your account.</p><p>If it doesnt arrive, check your spam folder.</p>"

View File

@ -74,12 +74,19 @@ describe InvitesController do
end end
it 'returns error if invite has already been redeemed' do it 'returns error if invite has already been redeemed' do
Fabricate(:invited_user, invite: invite, user: Fabricate(:user)) expect(invite.redeem).not_to eq(nil)
get "/invites/#{invite.invite_key}" get "/invites/#{invite.invite_key}"
expect(response.status).to eq(200) expect(response.status).to eq(200)
expect(response.body).to_not have_tag(:script, with: { src: '/assets/application.js' }) expect(response.body).to_not have_tag(:script, with: { src: '/assets/application.js' })
expect(response.body).to include(I18n.t('invite.not_found_template', site_name: SiteSetting.title, base_url: Discourse.base_url)) expect(response.body).to include(I18n.t('invite.not_found_template', site_name: SiteSetting.title, base_url: Discourse.base_url))
invite.update!(email: nil) # convert to email invite
get "/invites/#{invite.invite_key}"
expect(response.status).to eq(200)
expect(response.body).to_not have_tag(:script, with: { src: '/assets/application.js' })
expect(response.body).to include(I18n.t('invite.not_found_template_link', site_name: SiteSetting.title, base_url: Discourse.base_url))
end end
end end