diff --git a/app/models/user.rb b/app/models/user.rb index fb701ce..6fd25e9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -14,4 +14,13 @@ class User < ActiveRecord::Base write_attribute :email, value write_attribute :email_lower, value.downcase end + + def remember_token + [id, Digest::SHA512.hexdigest(password_digest)].join('$') + end + + def self.find_by_remember_token(token) + user = find_by_id(token.split('$').first) + (user && user.remember_token == token) ? user : nil + end end diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 04b8b74..3e72997 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -12,4 +12,11 @@ class UserTest < ActiveSupport::TestCase test "should save lower email" do assert_equal "lower@example.com", create(:user, email: 'LOWER@example.com').email_lower end + + test "should have remember token" do + user = create(:user) + assert_not_nil user.remember_token + assert_equal user, User.find_by_remember_token(user.remember_token) + assert_equal nil, User.find_by_remember_token('invalidtoken') + end end