X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/0a8c26e596b40da6d428a5c91db0d815d13c89e4..3c79240a6ab23e4103826dd1cec7a12a19e948db:/app/models/user.rb?ds=sidebyside diff --git a/app/models/user.rb b/app/models/user.rb index bc0c9966c..908ef3d51 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,11 +1,10 @@ class User < ActiveRecord::Base require 'xml/libxml' - require 'digest/md5' has_many :traces has_many :diary_entries, :order => 'created_at DESC' - has_many :messages, :foreign_key => :to_user_id - has_many :new_messages, :class_name => "Message", :foreign_key => :to_user_id, :conditions => "message_read = 0" + has_many :messages, :foreign_key => :to_user_id, :order => 'sent_on DESC' + has_many :new_messages, :class_name => "Message", :foreign_key => :to_user_id, :conditions => "message_read = 0", :order => 'sent_on DESC' has_many :friends has_many :tokens, :class_name => "UserToken" has_many :preferences, :class_name => "UserPreference" @@ -21,17 +20,20 @@ class User < ActiveRecord::Base before_save :encrypt_password def after_initialize - self.creation_time = Time.now + self.creation_time = Time.now if self.creation_time.nil? end def encrypt_password - self.pass_crypt = Digest::MD5.hexdigest(pass_crypt) unless pass_crypt_confirmation.nil? + if pass_crypt_confirmation + self.pass_salt = OSM::make_token(8) + self.pass_crypt = OSM::encrypt_password(pass_crypt, pass_salt) + end end def self.authenticate(options) if options[:username] and options[:password] user = find(:first, :conditions => ["email = ? OR display_name = ?", options[:username], options[:username]]) - user = nil unless user.pass_crypt == Digest::MD5.hexdigest(options[:password]) + user = nil if user and user.pass_crypt != OSM::encrypt_password(options[:password], user.pass_salt) elsif options[:token] token = UserToken.find(:first, :include => :user, :conditions => ["user_tokens.token = ?", options[:token]]) user = token.user if token