mirror of
https://github.com/discourse/discourse.git
synced 2025-05-29 11:48:08 +08:00
FIX: send activation email when accepting invite if password is set
This commit is contained in:
@ -36,9 +36,7 @@ class InvitesController < ApplicationController
|
|||||||
user = invite.redeem(username: params[:username], password: params[:password])
|
user = invite.redeem(username: params[:username], password: params[:password])
|
||||||
if user.present?
|
if user.present?
|
||||||
log_on_user(user)
|
log_on_user(user)
|
||||||
|
post_process_invite(user)
|
||||||
# Send a welcome message if required
|
|
||||||
user.enqueue_welcome_message('welcome_invite') if user.send_welcome_message
|
|
||||||
end
|
end
|
||||||
|
|
||||||
topic = user.present? ? invite.topics.first : nil
|
topic = user.present? ? invite.topics.first : nil
|
||||||
@ -128,10 +126,7 @@ class InvitesController < ApplicationController
|
|||||||
user = Invite.redeem_from_token(params[:token], params[:email], params[:username], params[:name], params[:topic].to_i)
|
user = Invite.redeem_from_token(params[:token], params[:email], params[:username], params[:name], params[:topic].to_i)
|
||||||
if user.present?
|
if user.present?
|
||||||
log_on_user(user)
|
log_on_user(user)
|
||||||
|
post_process_invite(user)
|
||||||
# Send a welcome message if required
|
|
||||||
user.enqueue_welcome_message('welcome_invite') if user.send_welcome_message
|
|
||||||
|
|
||||||
topic = invite.topics.first
|
topic = invite.topics.first
|
||||||
if topic.present?
|
if topic.present?
|
||||||
redirect_to path("#{topic.relative_url}")
|
redirect_to path("#{topic.relative_url}")
|
||||||
@ -223,4 +218,15 @@ class InvitesController < ApplicationController
|
|||||||
false
|
false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def post_process_invite(user)
|
||||||
|
user.enqueue_welcome_message('welcome_invite') if user.send_welcome_message
|
||||||
|
if user.has_password?
|
||||||
|
email_token = user.email_tokens.create(email: user.email)
|
||||||
|
Jobs.enqueue(:critical_user_email, type: :signup, user_id: user.id, email_token: email_token.token)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -62,7 +62,6 @@ InviteRedeemer = Struct.new(:invite, :username, :name, :password) do
|
|||||||
send_welcome_message
|
send_welcome_message
|
||||||
notify_invitee
|
notify_invitee
|
||||||
send_password_instructions
|
send_password_instructions
|
||||||
enqueue_activation_mail
|
|
||||||
delete_duplicate_invites
|
delete_duplicate_invites
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -127,13 +126,6 @@ InviteRedeemer = Struct.new(:invite, :username, :name, :password) do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def enqueue_activation_mail
|
|
||||||
if invited_user.has_password?
|
|
||||||
email_token = invited_user.email_tokens.create(email: invited_user.email)
|
|
||||||
Jobs.enqueue(:critical_user_email, type: :signup, user_id: invited_user.id, email_token: email_token.token)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def notify_invitee
|
def notify_invitee
|
||||||
if inviter = invite.invited_by
|
if inviter = invite.invited_by
|
||||||
inviter.notifications.create(notification_type: Notification.types[:invitee_accepted],
|
inviter.notifications.create(notification_type: Notification.types[:invitee_accepted],
|
||||||
|
@ -797,7 +797,7 @@ class User < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def find_email
|
def find_email
|
||||||
last_sent_email_address || email
|
last_sent_email_address.present? && EmailValidator.email_regex =~ last_sent_email_address ? last_sent_email_address : email
|
||||||
end
|
end
|
||||||
|
|
||||||
def tl3_requirements
|
def tl3_requirements
|
||||||
|
@ -223,10 +223,11 @@ describe InvitesController do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'welcome message' do
|
context 'welcome message and activation email' do
|
||||||
before do
|
before do
|
||||||
Invite.any_instance.stubs(:redeem).returns(user)
|
Invite.any_instance.stubs(:redeem).returns(user)
|
||||||
Jobs.expects(:enqueue).with(:invite_email, has_key(:invite_id))
|
Jobs.expects(:enqueue).with(:invite_email, has_key(:invite_id))
|
||||||
|
user.password_hash = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sends a welcome message if set' do
|
it 'sends a welcome message if set' do
|
||||||
@ -239,6 +240,12 @@ describe InvitesController do
|
|||||||
user.expects(:enqueue_welcome_message).with('welcome_invite').never
|
user.expects(:enqueue_welcome_message).with('welcome_invite').never
|
||||||
xhr :put, :perform_accept_invitation, id: invite.invite_key, format: :json
|
xhr :put, :perform_accept_invitation, id: invite.invite_key, format: :json
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'sends an activation email if password is set' do
|
||||||
|
user.password_hash = 'qaw3ni3h2wyr63lakw7pea1nrtr44pls'
|
||||||
|
Jobs.expects(:enqueue).with(:critical_user_email, has_entries(type: :signup, user_id: user.id))
|
||||||
|
xhr :put, :perform_accept_invitation, id: invite.invite_key, format: :json
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -89,7 +89,6 @@ describe InviteRedeemer do
|
|||||||
|
|
||||||
it "can set password" do
|
it "can set password" do
|
||||||
inviter = invite.invited_by
|
inviter = invite.invited_by
|
||||||
Jobs.expects(:enqueue).with(:critical_user_email, has_entries(type: :signup))
|
|
||||||
user = InviteRedeemer.new(invite, username, name, password).redeem
|
user = InviteRedeemer.new(invite, username, name, password).redeem
|
||||||
expect(user).to have_password
|
expect(user).to have_password
|
||||||
expect(user.confirm_password?(password)).to eq(true)
|
expect(user.confirm_password?(password)).to eq(true)
|
||||||
|
Reference in New Issue
Block a user