diff options
-rw-r--r-- | app/models/user.rb | 3 | ||||
-rw-r--r-- | changelogs/unreleased/46361-does-not-log-failed-sign-in-attempts-when-the-database-is-in-read-only-mode.yml | 5 | ||||
-rw-r--r-- | spec/models/user_spec.rb | 14 |
3 files changed, 22 insertions, 0 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index dfef065f094..173ab38e20c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1097,8 +1097,11 @@ class User < ActiveRecord::Base # <https://github.com/plataformatec/devise/blob/v4.0.0/lib/devise/models/lockable.rb#L92> # def increment_failed_attempts! + return if ::Gitlab::Database.read_only? + self.failed_attempts ||= 0 self.failed_attempts += 1 + if attempts_exceeded? lock_access! unless access_locked? else diff --git a/changelogs/unreleased/46361-does-not-log-failed-sign-in-attempts-when-the-database-is-in-read-only-mode.yml b/changelogs/unreleased/46361-does-not-log-failed-sign-in-attempts-when-the-database-is-in-read-only-mode.yml new file mode 100644 index 00000000000..e4255f11ecf --- /dev/null +++ b/changelogs/unreleased/46361-does-not-log-failed-sign-in-attempts-when-the-database-is-in-read-only-mode.yml @@ -0,0 +1,5 @@ +--- +title: Does not log failed sign-in attempts when the database is in read-only mode +merge_request: 18957 +author: +type: fixed diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index ad094b3ed48..bb5308221f0 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -2755,4 +2755,18 @@ describe User do it { is_expected.to be_truthy } end end + + describe '#increment_failed_attempts!' do + subject(:user) { create(:user, failed_attempts: 0) } + + it 'logs failed sign-in attempts' do + expect { user.increment_failed_attempts! }.to change(user, :failed_attempts).from(0).to(1) + end + + it 'does not log failed sign-in attempts when in a GitLab read-only instance' do + allow(Gitlab::Database).to receive(:read_only?) { true } + + expect { user.increment_failed_attempts! }.not_to change(user, :failed_attempts) + end + end end |