mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 01:05:16 +08:00
FIX: rescue specific errors on invite failure
This commit is contained in:
parent
f5b11cb429
commit
77a8cae094
|
@ -74,7 +74,7 @@ class InvitesController < ApplicationController
|
|||
else
|
||||
render json: failed_json, status: 422
|
||||
end
|
||||
rescue => e
|
||||
rescue Invite::UserExists => e
|
||||
render json: {errors: [e.message]}, status: 422
|
||||
end
|
||||
end
|
||||
|
|
|
@ -497,7 +497,7 @@ class TopicsController < ApplicationController
|
|||
else
|
||||
render json: failed_json, status: 422
|
||||
end
|
||||
rescue => e
|
||||
rescue Topic::UserExists => e
|
||||
render json: {errors: [e.message]}, status: 422
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
require_dependency 'rate_limiter'
|
||||
|
||||
class Invite < ActiveRecord::Base
|
||||
class UserExists < StandardError; end
|
||||
include RateLimiter::OnCreateRecord
|
||||
include Trashable
|
||||
|
||||
|
@ -103,7 +104,7 @@ class Invite < ActiveRecord::Base
|
|||
|
||||
if user
|
||||
extend_permissions(topic, user, invited_by) if topic
|
||||
raise StandardError.new I18n.t("invite.user_exists", email: lower_email, username: user.username)
|
||||
raise UserExists.new I18n.t("invite.user_exists", email: lower_email, username: user.username)
|
||||
end
|
||||
|
||||
invite = Invite.with_deleted
|
||||
|
|
|
@ -10,6 +10,7 @@ require_dependency 'discourse_tagging'
|
|||
require_dependency 'search'
|
||||
|
||||
class Topic < ActiveRecord::Base
|
||||
class UserExists < StandardError; end
|
||||
include ActionView::Helpers::SanitizeHelper
|
||||
include RateLimiter::OnCreateRecord
|
||||
include HasCustomFields
|
||||
|
@ -722,7 +723,7 @@ SQL
|
|||
if private_message?
|
||||
# If the user exists, add them to the message.
|
||||
user = User.find_by_username_or_email(username_or_email)
|
||||
raise StandardError.new I18n.t("topic_invite.user_exists") if user.present? && topic_allowed_users.where(user_id: user.id).exists?
|
||||
raise UserExists.new I18n.t("topic_invite.user_exists") if user.present? && topic_allowed_users.where(user_id: user.id).exists?
|
||||
|
||||
if user && topic_allowed_users.create!(user_id: user.id)
|
||||
# Create a small action message
|
||||
|
@ -747,7 +748,7 @@ SQL
|
|||
else
|
||||
# invite existing member to a topic
|
||||
user = User.find_by_username(username_or_email)
|
||||
raise StandardError.new I18n.t("topic_invite.user_exists") if user.present? && topic_allowed_users.where(user_id: user.id).exists?
|
||||
raise UserExists.new I18n.t("topic_invite.user_exists") if user.present? && topic_allowed_users.where(user_id: user.id).exists?
|
||||
|
||||
if user && topic_allowed_users.create!(user_id: user.id)
|
||||
# rate limit topic invite
|
||||
|
|
|
@ -162,7 +162,7 @@ describe Invite do
|
|||
|
||||
it "works" do
|
||||
# doesn't create an invite
|
||||
expect { topic.invite_by_email(topic.user, coding_horror.email) }.to raise_error(StandardError)
|
||||
expect { topic.invite_by_email(topic.user, coding_horror.email) }.to raise_error(Invite::UserExists)
|
||||
|
||||
# gives the user permission to access the topic
|
||||
expect(topic.allowed_users.include?(coding_horror)).to eq(true)
|
||||
|
|
|
@ -1678,7 +1678,7 @@ describe Topic do
|
|||
|
||||
it "should add user to the group" do
|
||||
expect(Guardian.new(walter).can_see?(group_private_topic)).to be_falsey
|
||||
expect { group_private_topic.invite(group_manager, walter.email) }.to raise_error(StandardError)
|
||||
expect { group_private_topic.invite(group_manager, walter.email) }.to raise_error(Invite::UserExists)
|
||||
expect(walter.groups).to include(group)
|
||||
expect(Guardian.new(walter).can_see?(group_private_topic)).to be_truthy
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user