def login_from_cookie user = cookies[:auth_token] && User.find_by_remember_token(cookies[:auth_token]) if user && user.remember_token? self.current_user = user handle_remember_cookie! false # freshen cookie token (keeping date) self.current_user end end def valid_remember_cookie? return nil unless @current_user (@current_user.remember_token?) && (cookies[:auth_token] == @current_user.remember_token) end # Refresh the cookie auth token if it exists, create it otherwise def handle_remember_cookie!(new_cookie_flag) return unless @current_user case when valid_remember_cookie? then @current_user.refresh_token # keeping same expiry date when new_cookie_flag then @current_user.remember_me else @current_user.forget_me end send_remember_cookie! end def kill_remember_cookie! cookies.delete :auth_token end def send_remember_cookie! cookies[:auth_token] = { :value => @current_user.remember_token, :expires => @current_user.remember_token_expires_at } end