mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: better accept invite flow when user is invited via a link
This commit is contained in:
parent
77d947701c
commit
e0bc82657b
@ -94,8 +94,9 @@ export default Ember.Controller.extend(
|
|||||||
"successMessage",
|
"successMessage",
|
||||||
result.message || I18n.t("invites.success")
|
result.message || I18n.t("invites.success")
|
||||||
);
|
);
|
||||||
this.set("redirectTo", result.redirect_to);
|
if (result.redirect_to) {
|
||||||
DiscourseURL.redirectTo(result.redirect_to || "/");
|
DiscourseURL.redirectTo(result.redirect_to || "/");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
result.errors &&
|
result.errors &&
|
||||||
|
@ -8,13 +8,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-form">
|
<div class="col-form">
|
||||||
<p>{{i18n 'invites.invited_by'}}</p>
|
|
||||||
|
|
||||||
<p>{{user-info user=invitedBy}}</p>
|
|
||||||
|
|
||||||
{{#if successMessage}}
|
{{#if successMessage}}
|
||||||
<p>{{successMessage}}</p>
|
<br/><br/>
|
||||||
|
<div class='alert alert-info'><p>{{{successMessage}}}</p></div>
|
||||||
{{else}}
|
{{else}}
|
||||||
|
<p>{{i18n 'invites.invited_by'}}</p>
|
||||||
|
<p>{{user-info user=invitedBy}}</p>
|
||||||
|
|
||||||
<p>{{{yourEmailMessage}}}
|
<p>{{{yourEmailMessage}}}
|
||||||
{{#if externalAuthsEnabled}}
|
{{#if externalAuthsEnabled}}
|
||||||
@ -63,7 +62,6 @@
|
|||||||
<br/><br/>
|
<br/><br/>
|
||||||
<div class='alert alert-error'>{{errorMessage}}</div>
|
<div class='alert alert-error'>{{errorMessage}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -47,16 +47,19 @@ class InvitesController < ApplicationController
|
|||||||
begin
|
begin
|
||||||
user = invite.redeem(username: params[:username], name: params[:name], password: params[:password], user_custom_fields: params[:user_custom_fields])
|
user = invite.redeem(username: params[:username], name: params[:name], password: params[:password], user_custom_fields: params[:user_custom_fields])
|
||||||
if user.present?
|
if user.present?
|
||||||
log_on_user(user)
|
log_on_user(user) if user.active?
|
||||||
post_process_invite(user)
|
post_process_invite(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
topic = user.present? ? invite.topics.first : nil
|
response = { success: true }
|
||||||
|
if user.present? && user.active?
|
||||||
|
topic = invite.topics.first
|
||||||
|
response[:redirect_to] = topic.present? ? path("#{topic.relative_url}") : path("/")
|
||||||
|
else
|
||||||
|
response[:message] = I18n.t('invite.confirm_email')
|
||||||
|
end
|
||||||
|
|
||||||
render json: {
|
render json: response
|
||||||
success: true,
|
|
||||||
redirect_to: topic.present? ? path("#{topic.relative_url}") : path("/")
|
|
||||||
}
|
|
||||||
rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved => e
|
rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved => e
|
||||||
render json: {
|
render json: {
|
||||||
success: false,
|
success: false,
|
||||||
|
@ -185,6 +185,7 @@ en:
|
|||||||
|
|
||||||
<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>
|
||||||
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>You’re 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 doesn’t arrive, check your spam folder.</p>"
|
||||||
|
|
||||||
bulk_invite:
|
bulk_invite:
|
||||||
file_should_be_csv: "The uploaded file should be of csv format."
|
file_should_be_csv: "The uploaded file should be of csv format."
|
||||||
|
@ -355,6 +355,7 @@ describe InvitesController do
|
|||||||
put "/invites/show/#{invite.invite_key}.json", params: { password: "verystrongpassword" }
|
put "/invites/show/#{invite.invite_key}.json", params: { password: "verystrongpassword" }
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(JSON.parse(response.body)["success"]).to eq(true)
|
expect(JSON.parse(response.body)["success"]).to eq(true)
|
||||||
|
expect(JSON.parse(response.body)["message"]).to eq(I18n.t("invite.confirm_email"))
|
||||||
|
|
||||||
invited_user = User.find_by_email(invite.email)
|
invited_user = User.find_by_email(invite.email)
|
||||||
expect(invited_user.active).to eq(false)
|
expect(invited_user.active).to eq(false)
|
||||||
|
Loading…
Reference in New Issue
Block a user