From 72d0843c1fefedd44742a2d7e05ce46047d17b93 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Fri, 12 Dec 2008 12:07:09 +0000 Subject: [PATCH] Makes User.find_by_mail case-insensitive (password reminder #2322, repo users mapping). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2122 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/user.rb | 5 +++++ test/integration/account_test.rb | 2 +- test/unit/user_test.rb | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 3722081d..ff46d977 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -178,6 +178,11 @@ class User < ActiveRecord::Base token = Token.find_by_action_and_value('autologin', key) token && (token.created_on > Setting.autologin.to_i.day.ago) && token.user.active? ? token.user : nil end + + # Makes find_by_mail case-insensitive + def self.find_by_mail(mail) + find(:first, :conditions => ["LOWER(mail) = ?", mail.to_s.downcase]) + end # Sort users by their display names def <=>(user) diff --git a/test/integration/account_test.rb b/test/integration/account_test.rb index c349200d..c6cfd080 100644 --- a/test/integration/account_test.rb +++ b/test/integration/account_test.rb @@ -44,7 +44,7 @@ class AccountTest < ActionController::IntegrationTest assert_response :success assert_template "account/lost_password" - post "account/lost_password", :mail => 'jsmith@somenet.foo' + post "account/lost_password", :mail => 'jSmith@somenet.foo' assert_redirected_to "account/login" token = Token.find(:first) diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index b931501a..319a1c2f 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -158,4 +158,10 @@ class UserTest < Test::Unit::TestCase @jsmith.pref.comments_sorting = 'desc' assert @jsmith.wants_comments_in_reverse_order? end + + def test_find_by_mail_should_be_case_insensitive + u = User.find_by_mail('JSmith@somenet.foo') + assert_not_nil u + assert_equal 'jsmith@somenet.foo', u.mail + end end