diff options
Diffstat (limited to 'app/models/user.rb')
-rw-r--r-- | app/models/user.rb | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index 8ee0421e45f..5fbd6271589 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -84,10 +84,11 @@ class User < ApplicationRecord update_tracked_fields(request) - lease = Gitlab::ExclusiveLease.new("user_update_tracked_fields:#{id}", timeout: 1.hour.to_i) - return unless lease.try_obtain - - Users::UpdateService.new(self, user: self).execute(validate: false) + Gitlab::ExclusiveLease.throttle(id) do + ::Ability.forgetting(/admin/) do + Users::UpdateService.new(self, user: self).execute(validate: false) + end + end end # rubocop: enable CodeReuse/ServiceClass @@ -1868,6 +1869,12 @@ class User < ApplicationRecord !!(password_expires_at && password_expires_at < Time.current) end + def password_expired_if_applicable? + return false unless allow_password_authentication? + + password_expired? + end + def can_be_deactivated? active? && no_recent_activity? && !internal? end |