diff --git a/app/models/topic.rb b/app/models/topic.rb index de5ea80d0d4..bfec8ac390a 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -582,6 +582,8 @@ class Topic < ActiveRecord::Base 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? + if user && topic_allowed_users.create!(user_id: user.id) # Create a small action message add_small_action(invited_by, "invited_user", user.username) @@ -605,6 +607,8 @@ class Topic < ActiveRecord::Base 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? + if user && topic_allowed_users.create!(user_id: user.id) # rate limit topic invite RateLimiter.new(invited_by, "topic-invitations-per-day", SiteSetting.max_topic_invitations_per_day, 1.day.to_i).performed! diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 841cf5108ff..6e7d5c342c0 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -138,6 +138,8 @@ en: reading_time: "Reading time" likes: "Likes" + topic_invite_user_exists: "Sorry, that user has already been invited. You may only invite a user to a topic once." + too_many_replies: one: "We're sorry, but new users are temporarily limited to 1 reply in the same topic." other: "We're sorry, but new users are temporarily limited to %{count} replies in the same topic."