diff --git a/app/models/concerns/second_factor_manager.rb b/app/models/concerns/second_factor_manager.rb index 1761d645287..67e160d7949 100644 --- a/app/models/concerns/second_factor_manager.rb +++ b/app/models/concerns/second_factor_manager.rb @@ -34,15 +34,15 @@ module SecondFactorManager end def totp_enabled? - !!(self&.user_second_factors&.totp&.enabled?) && - !SiteSetting.enable_sso && - SiteSetting.enable_local_logins + !SiteSetting.enable_sso && + SiteSetting.enable_local_logins && + self&.user_second_factors.totps.exists? end def backup_codes_enabled? - !!(self&.user_second_factors&.backup_codes&.present?) && - !SiteSetting.enable_sso && - SiteSetting.enable_local_logins + !SiteSetting.enable_sso && + SiteSetting.enable_local_logins && + self&.user_second_factors.backup_codes.exists? end def remaining_backup_codes diff --git a/app/models/user_second_factor.rb b/app/models/user_second_factor.rb index dc7f1695c87..6c39e8c9fa0 100644 --- a/app/models/user_second_factor.rb +++ b/app/models/user_second_factor.rb @@ -5,6 +5,10 @@ class UserSecondFactor < ActiveRecord::Base where(method: UserSecondFactor.methods[:backup_codes], enabled: true) end + scope :totps, -> do + where(method: UserSecondFactor.methods[:totp], enabled: true) + end + def self.methods @methods ||= Enum.new( totp: 1,