mirror of
https://github.com/discourse/discourse.git
synced 2025-02-07 02:47:15 +08:00
FIX: Allow add email to group if user can invite (#13097)
It used to allow adding email addresses to a group even if invites were disabled for the site. This does not allow user to input email address if they cannot invite. The second thing this commit improves is the message that is displayed to the user when they hit the invite rate limit.
This commit is contained in:
parent
4ce854f21c
commit
38af28d58b
|
@ -2,7 +2,11 @@
|
||||||
<form class="form-vertical group-add-members">
|
<form class="form-vertical group-add-members">
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label">
|
<label class="control-label">
|
||||||
{{i18n "groups.add_members.usernames"}}
|
{{#if currentUser.can_invite_to_forum}}
|
||||||
|
{{i18n "groups.add_members.usernames_or_emails.title"}}
|
||||||
|
{{else}}
|
||||||
|
{{i18n "groups.add_members.usernames.title"}}
|
||||||
|
{{/if}}
|
||||||
</label>
|
</label>
|
||||||
<p class="description">
|
<p class="description">
|
||||||
{{i18n "groups.add_members.description"}}
|
{{i18n "groups.add_members.description"}}
|
||||||
|
@ -14,8 +18,8 @@
|
||||||
id="group-add-members-user-selector"
|
id="group-add-members-user-selector"
|
||||||
onChange=(action (mut usernamesAndEmails))
|
onChange=(action (mut usernamesAndEmails))
|
||||||
options=(hash
|
options=(hash
|
||||||
allowEmails=true
|
allowEmails=currentUser.can_invite_to_forum
|
||||||
filterPlaceholder="groups.add_members.input_placeholder"
|
filterPlaceholder=(if currentUser.can_invite_to_forum "groups.add_members.usernames_or_emails.input_placeholder" "groups.add_members.usernames.input_placeholder")
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -368,7 +368,15 @@ class GroupsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
emails.each do |email|
|
emails.each do |email|
|
||||||
|
begin
|
||||||
Invite.generate(current_user, email: email, group_ids: [group.id])
|
Invite.generate(current_user, email: email, group_ids: [group.id])
|
||||||
|
rescue RateLimiter::LimitExceeded => e
|
||||||
|
return render_json_error(I18n.t(
|
||||||
|
"invite.rate_limit",
|
||||||
|
count: SiteSetting.max_invites_per_day,
|
||||||
|
time_left: e.time_left
|
||||||
|
))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
render json: success_json.merge!(
|
render json: success_json.merge!(
|
||||||
|
|
|
@ -660,8 +660,12 @@ en:
|
||||||
add_members:
|
add_members:
|
||||||
title: "Add members to %{group_name}"
|
title: "Add members to %{group_name}"
|
||||||
description: "You can also paste in a comma separated list."
|
description: "You can also paste in a comma separated list."
|
||||||
usernames: "Enter usernames or email addresses"
|
usernames_or_emails:
|
||||||
|
title: "Enter usernames or email addresses"
|
||||||
input_placeholder: "Usernames or emails"
|
input_placeholder: "Usernames or emails"
|
||||||
|
usernames:
|
||||||
|
title: "Enter usernames"
|
||||||
|
input_placeholder: "Usernames"
|
||||||
notify_users: "Notify users"
|
notify_users: "Notify users"
|
||||||
requests:
|
requests:
|
||||||
title: "Requests"
|
title: "Requests"
|
||||||
|
|
|
@ -243,6 +243,9 @@ en:
|
||||||
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>"
|
||||||
invite_exists: "You already invited <b>%{email}</b>."
|
invite_exists: "You already invited <b>%{email}</b>."
|
||||||
invalid_email: "%{email} isn't a valid email address."
|
invalid_email: "%{email} isn't a valid email address."
|
||||||
|
rate_limit:
|
||||||
|
one: "You have already sent %{count} invite in the last day, please wait %{time_left} before trying again."
|
||||||
|
other: "You have already sent %{count} invites in the last day, please wait %{time_left} before trying again."
|
||||||
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>"
|
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>"
|
||||||
cant_invite_to_group: "You are not allowed to invite users to specified group(s). Make sure you are owner of the group(s) you are trying to invite to."
|
cant_invite_to_group: "You are not allowed to invite users to specified group(s). Make sure you are owner of the group(s) you are trying to invite to."
|
||||||
disabled_errors:
|
disabled_errors:
|
||||||
|
|
|
@ -11,8 +11,8 @@ class RateLimiter
|
||||||
@type = type
|
@type = type
|
||||||
end
|
end
|
||||||
|
|
||||||
def description
|
def time_left
|
||||||
time_left =
|
@time_left ||=
|
||||||
if @available_in <= 3
|
if @available_in <= 3
|
||||||
I18n.t("rate_limiter.short_time")
|
I18n.t("rate_limiter.short_time")
|
||||||
elsif @available_in < 1.minute.to_i
|
elsif @available_in < 1.minute.to_i
|
||||||
|
@ -22,7 +22,9 @@ class RateLimiter
|
||||||
else
|
else
|
||||||
I18n.t("rate_limiter.hours", count: (@available_in / 1.hour.to_i))
|
I18n.t("rate_limiter.hours", count: (@available_in / 1.hour.to_i))
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def description
|
||||||
if @type.present?
|
if @type.present?
|
||||||
type_key = @type.tr("-", "_")
|
type_key = @type.tr("-", "_")
|
||||||
msg = I18n.t("rate_limiter.by_type.#{type_key}", time_left: time_left, default: "")
|
msg = I18n.t("rate_limiter.by_type.#{type_key}", time_left: time_left, default: "")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user