Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/member.rb')
-rw-r--r--app/models/member.rb23
1 files changed, 17 insertions, 6 deletions
diff --git a/app/models/member.rb b/app/models/member.rb
index 044b662e10f..0636c3c2d4e 100644
--- a/app/models/member.rb
+++ b/app/models/member.rb
@@ -14,6 +14,7 @@ class Member < ApplicationRecord
include UpdateHighestRole
AVATAR_SIZE = 40
+ ACCESS_REQUEST_APPROVERS_TO_BE_NOTIFIED_LIMIT = 10
attr_accessor :raw_invite_token
@@ -107,10 +108,14 @@ class Member < ApplicationRecord
scope :active_without_invites_and_requests, -> do
left_join_users
.where(users: { state: 'active' })
- .non_request
+ .without_invites_and_requests
+ .reorder(nil)
+ end
+
+ scope :without_invites_and_requests, -> do
+ non_request
.non_invite
.non_minimal_access
- .reorder(nil)
end
scope :invite, -> { where.not(invite_token: nil) }
@@ -166,10 +171,10 @@ class Member < ApplicationRecord
after_create :send_invite, if: :invite?, unless: :importing?
after_create :send_request, if: :request?, unless: :importing?
after_create :create_notification_setting, unless: [:pending?, :importing?]
- after_create :post_create_hook, unless: [:pending?, :importing?]
- after_update :post_update_hook, unless: [:pending?, :importing?]
+ after_create :post_create_hook, unless: [:pending?, :importing?], if: :hook_prerequisites_met?
+ after_update :post_update_hook, unless: [:pending?, :importing?], if: :hook_prerequisites_met?
after_destroy :destroy_notification_setting
- after_destroy :post_destroy_hook, unless: :pending?
+ after_destroy :post_destroy_hook, unless: :pending?, if: :hook_prerequisites_met?
after_commit :refresh_member_authorized_projects
default_value_for :notification_level, NotificationSetting.levels[:global]
@@ -336,7 +341,7 @@ class Member < ApplicationRecord
return User.find_by(id: user) if user.is_a?(Integer)
- User.find_by(email: user) || user
+ User.find_by_any_email(user) || user
end
def retrieve_member(source, user, existing_members)
@@ -383,6 +388,12 @@ class Member < ApplicationRecord
invite? || request?
end
+ def hook_prerequisites_met?
+ # It is essential that an associated user record exists
+ # so that we can successfully fire any member related hooks/notifications.
+ user.present?
+ end
+
def accept_request
return false unless request?