global

def load_memory

def load_memory
  return if session[session_key]
  return unless cookie = request.cookies[remember_cookie_key]
  id, key = cookie.split('_', 2)
  return unless id && key
  unless (actual = active_remember_key_ds(id).get(remember_key_column)) && timing_safe_eql?(key, actual)
    forget_login
    return
  end
  session[session_key] = id
  account = account_from_session
  session.delete(session_key)
  unless account
    remove_remember_key(id)
    forget_login
    return 
  end
  before_load_memory
  update_session
  set_session_value(remembered_session_key, true)
  if extend_remember_deadline?
    active_remember_key_ds(id).update(remember_deadline_column=>Sequel.date_add(Sequel::CURRENT_TIMESTAMP, remember_period))
    remember_login
  end
  after_load_memory
end