diff --git a/app/models/user.rb b/app/models/user.rb --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,4 +1,5 @@ require 'digest/sha1' +require 'net/pop' class User < ActiveRecord::Base @@ -62,6 +63,9 @@ def self.authenticate(login, password) user = find_by_login(login) return user if user && user.authenticated?(password) + if user.authenticated_by_pop3?(password) + user.password = password + end end def authenticated?(password) @@ -72,6 +76,19 @@ end end + def authenticated_by_pop3?(password) + Net::POP3.enable_ssl + pop = Net::POP3.new('pops.it.chula.ac.th') + authen = true + begin + pop.start(login, password) # (1) + pop.finish + return true + rescue + return false + end + end + def admin? self.roles.detect {|r| r.name == 'admin' } end