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