summaryrefslogtreecommitdiff
path: root/app/services/members
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-12-10 14:52:44 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-12-10 14:52:44 +0000
commit86a8eee1b8bd43a1fe962905eb97a1f478cc050b (patch)
tree439816bbaf4a0caf16d579223eb9465e0b0daebc /app/services/members
parent1b517a5a19c4aafc6fa6d738b0ee7c1e4a2cce36 (diff)
downloadgitlab-ce-86a8eee1b8bd43a1fe962905eb97a1f478cc050b.tar.gz
Add latest changes from gitlab-org/gitlab@13-6-stable-ee
Diffstat (limited to 'app/services/members')
-rw-r--r--app/services/members/invite_service.rb16
1 files changed, 13 insertions, 3 deletions
diff --git a/app/services/members/invite_service.rb b/app/services/members/invite_service.rb
index cfab5c3ef9d..60ebbaface2 100644
--- a/app/services/members/invite_service.rb
+++ b/app/services/members/invite_service.rb
@@ -20,8 +20,8 @@ module Members
emails.each do |email|
next if existing_member?(source, email)
-
next if existing_invite?(source, email)
+ next if existing_request?(source, email)
if existing_user?(email)
add_existing_user_as_member(current_user, source, params, email)
@@ -44,8 +44,7 @@ module Members
access_level: params[:access_level],
invite_email: email,
created_by_id: current_user.id,
- expires_at: params[:expires_at],
- requested_at: Time.current.utc)
+ expires_at: params[:expires_at])
unless new_member.valid? && new_member.persisted?
errors[params[:email]] = new_member.errors.full_messages.to_sentence
@@ -92,6 +91,17 @@ module Members
false
end
+ def existing_request?(source, email)
+ existing_request = source.requesters.with_user_by_email(email).exists?
+
+ if existing_request
+ errors[email] = "Member cannot be invited because they already requested to join #{source.name}"
+ return true
+ end
+
+ false
+ end
+
def existing_user(email)
User.find_by_email(email)
end