gist: 12536 Download_button fork
public
Public Clone URL: git://gist.github.com/12536.git
email_backend.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
require 'email_re'
 
#I assume this is monkey patching a BasicBackend class
#that is already defined in Django?
#Or else you would just define both methods in EmailBackend?
class BasicBackend
  def self.get_user(id)
    User.find(id)
  rescue ActiveRecord::RecordNotFound
    nil
  end
end
 
class EmailBackend < BasicBackend
  def self.authenticate(username, password)
  
    if EMAIL_RE.match(username)
      user = find_by_email(username)
      return nil unless user
    else
      user = find_by_username(username)
      return nil unless user
    end
    user if user.check_password(password)
  end
end
email_re.rb
1
EMAIL_RE = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
user.rb
1
2
3
4
5
6
7
8
9
10
11
require 'email_re'
class User < ActiveRecord::Base
  def self.authenticate(login, password)
    user = if EMAIL_RE.match(login)
      find_by_email(login)
    else
      find_by_username(login)
    end
    return user if user and user.check_password(password)
  end
end

Owner

pjb3

Revisions

  • 479796 pjb3 Wed Sep 24 05:20:22 -0700 2008
  • df348b pjb3 Wed Sep 24 05:15:16 -0700 2008
  • 257c75 Wed Sep 24 04:58:48 -0700 2008
  • c82f62 Wed Sep 24 04:48:39 -0700 2008