FIX: Add unique index on group_requests(group_id, user_id). (#7399)

This commit is contained in:
Bianca Nenciu
2019-04-23 05:51:30 +03:00
committed by Sam
parent b706a1b08d
commit 9050b1bf5a
4 changed files with 28 additions and 8 deletions

View File

@ -408,12 +408,13 @@ class GroupsController < ApplicationController
def request_membership
params.require(:reason)
unless current_user.staff?
RateLimiter.new(current_user, "request_group_membership", 1, 1.day).performed!
end
group = find_group(:id)
group_name = group.name
begin
GroupRequest.create!(group: group, user: current_user, reason: params[:reason])
rescue ActiveRecord::RecordNotUnique => e
return render json: failed_json.merge(error: I18n.t("groups.errors.already_requested_membership")), status: 409
end
usernames = [current_user.username].concat(
group.users.where('group_users.owner')
@ -432,15 +433,13 @@ class GroupsController < ApplicationController
EOF
post = PostCreator.new(current_user,
title: I18n.t('groups.request_membership_pm.title', group_name: group_name),
title: I18n.t('groups.request_membership_pm.title', group_name: group.name),
raw: raw,
archetype: Archetype.private_message,
target_usernames: usernames.join(','),
skip_validations: true
).create!
GroupRequest.create!(group: group, user: current_user, reason: params[:reason])
render json: success_json.merge(relative_url: post.topic.relative_url)
end