fix: Case insensitive email match (#6760)

Fixes: https://linear.app/chatwoot/issue/CW-1354/email-id-case-sensitive

Co-authored-by: Sojan <sojan@pepalo.com>
This commit is contained in:
Tejaswini Chile
2023-03-28 15:23:41 +05:30
committed by GitHub
parent fdb067a352
commit 54a809ea54
3 changed files with 16 additions and 0 deletions

View File

@@ -106,6 +106,10 @@ class User < ApplicationRecord
scope :order_by_full_name, -> { order('lower(name) ASC') } scope :order_by_full_name, -> { order('lower(name) ASC') }
before_validation do
self.email = email.try(:downcase)
end
def send_devise_notification(notification, *args) def send_devise_notification(notification, *args)
devise_mailer.with(account: Current.account).send(notification, self, *args).deliver_later devise_mailer.with(account: Current.account).send(notification, self, *args).deliver_later
end end

View File

@@ -115,6 +115,11 @@ RSpec.describe 'Platform Users API', type: :request do
) )
) )
expect(platform_app.platform_app_permissibles.first.permissible_id).to eq data['id'] expect(platform_app.platform_app_permissibles.first.permissible_id).to eq data['id']
post '/platform/api/v1/users/', params: { name: 'test', email: 'TesT@test.com', password: 'Password1!' },
headers: { api_access_token: platform_app.access_token.token }, as: :json
data = JSON.parse(response.body)
expect(data['message']).to eq('Email has already been taken')
end end
it 'fetch existing user and creates permissible for the user' do it 'fetch existing user and creates permissible for the user' do

View File

@@ -89,4 +89,11 @@ RSpec.describe User do
expect(user.will_save_change_to_email?).to be true expect(user.will_save_change_to_email?).to be true
end end
end end
context 'when the supplied email is uppercase' do
it 'downcases the email on save' do
new_user = create(:user, email: 'Test123@test.com')
expect(new_user.email).to eq('test123@test.com')
end
end
end end