app/models/twitter_auth/generic_user.rb in mbleigh-twitter-auth-0.1.8 vs app/models/twitter_auth/generic_user.rb in mbleigh-twitter-auth-0.1.10

- old
+ new

@@ -1,9 +1,9 @@ module TwitterAuth class GenericUser < ActiveRecord::Base - attr_protected :login - + attr_protected :login, :remember_token, :remember_token_expires_at + TWITTER_ATTRIBUTES = [ :name, :location, :description, :profile_image_url, @@ -24,10 +24,11 @@ validates_presence_of :login validates_format_of :login, :with => /\A[a-z0-9_]+\z/i validates_length_of :login, :in => 1..15 validates_uniqueness_of :login, :case_sensitive => false + validates_uniqueness_of :remember_token, :allow_blank => true def self.table_name; 'users' end def self.new_from_twitter_hash(hash) raise ArgumentError, 'Invalid hash: must include screen_name.' unless hash.key?('screen_name') @@ -39,10 +40,14 @@ user.send("#{att}=", hash[att.to_s]) if user.respond_to?("#{att}=") end user end + + def self.from_remember_token(token) + first(:conditions => ["remember_token = ? AND remember_token_expires_at > ?", token, Time.now]) + end def assign_twitter_attributes(hash) TWITTER_ATTRIBUTES.each do |att| send("#{att}=", hash[att.to_s]) if respond_to?("#{att}=") end @@ -63,8 +68,24 @@ if TwitterAuth.oauth? TwitterAuth::Dispatcher::Oauth.new(self) else TwitterAuth::Dispatcher::Basic.new(self) end + end + + def remember_me + return false unless respond_to?(:remember_token) + + self.remember_token = ActiveSupport::SecureRandom.hex(10) + self.remember_token_expires_at = Time.now + TwitterAuth.remember_for.days + + save + + {:value => self.remember_token, :expires => self.remember_token_expires_at} + end + + def forget_me + self.remember_token = self.remember_token_expires_at = nil + self.save end end end