mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-03 20:48:07 +00:00 
			
		
		
		
	## Linear: - https://github.com/chatwoot/chatwoot/issues/486 ## Description This PR implements Multi-Factor Authentication (MFA) support for user accounts, enhancing security by requiring a second form of verification during login. The feature adds TOTP (Time-based One-Time Password) authentication with QR code generation and backup codes for account recovery. ## Type of change - [ ] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? - Added comprehensive RSpec tests for MFA controller functionality - Tested MFA setup flow with QR code generation - Verified OTP validation and backup code generation - Tested login flow with MFA enabled/disabled ## Checklist: - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --------- Co-authored-by: Pranav <pranav@chatwoot.com> Co-authored-by: Sojan Jose <sojan@pepalo.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com>
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# == Schema Information
 | 
						|
#
 | 
						|
# Table name: users
 | 
						|
#
 | 
						|
#  id                     :integer          not null, primary key
 | 
						|
#  availability           :integer          default("online")
 | 
						|
#  confirmation_sent_at   :datetime
 | 
						|
#  confirmation_token     :string
 | 
						|
#  confirmed_at           :datetime
 | 
						|
#  consumed_timestep      :integer
 | 
						|
#  current_sign_in_at     :datetime
 | 
						|
#  current_sign_in_ip     :string
 | 
						|
#  custom_attributes      :jsonb
 | 
						|
#  display_name           :string
 | 
						|
#  email                  :string
 | 
						|
#  encrypted_password     :string           default(""), not null
 | 
						|
#  last_sign_in_at        :datetime
 | 
						|
#  last_sign_in_ip        :string
 | 
						|
#  message_signature      :text
 | 
						|
#  name                   :string           not null
 | 
						|
#  otp_backup_codes       :text
 | 
						|
#  otp_required_for_login :boolean          default(FALSE), not null
 | 
						|
#  otp_secret             :string
 | 
						|
#  provider               :string           default("email"), not null
 | 
						|
#  pubsub_token           :string
 | 
						|
#  remember_created_at    :datetime
 | 
						|
#  reset_password_sent_at :datetime
 | 
						|
#  reset_password_token   :string
 | 
						|
#  sign_in_count          :integer          default(0), not null
 | 
						|
#  tokens                 :json
 | 
						|
#  type                   :string
 | 
						|
#  ui_settings            :jsonb
 | 
						|
#  uid                    :string           default(""), not null
 | 
						|
#  unconfirmed_email      :string
 | 
						|
#  created_at             :datetime         not null
 | 
						|
#  updated_at             :datetime         not null
 | 
						|
#
 | 
						|
# Indexes
 | 
						|
#
 | 
						|
#  index_users_on_email                   (email)
 | 
						|
#  index_users_on_otp_required_for_login  (otp_required_for_login)
 | 
						|
#  index_users_on_otp_secret              (otp_secret) UNIQUE
 | 
						|
#  index_users_on_pubsub_token            (pubsub_token) UNIQUE
 | 
						|
#  index_users_on_reset_password_token    (reset_password_token) UNIQUE
 | 
						|
#  index_users_on_uid_and_provider        (uid,provider) UNIQUE
 | 
						|
#
 | 
						|
class SuperAdmin < User
 | 
						|
end
 |