@Override
 public long issueNewSessionCookie(
     HttpServletRequest req, HttpServletResponse resp, String userId) {
   User user = UserManager.getUser(Long.parseLong(userId));
   long expiresAt = System.currentTimeMillis() + SessionUtil.SESSION_LIFETIME * 1000L;
   SessionInfo sessionInfo = new SessionInfo(user.getUid(), expiresAt, random.nextLong());
   FilterUtil.setSessionCookie(req, resp, sessionInfo);
   FilterUtil.setSessionInfoInRequestAttributeAfterLogin(req, user, sessionInfo);
   return SessionUtil.SESSION_LIFETIME;
 }
    @Override
    public boolean hasBigAccountChangeSince(String userId, long issueAt) {
      Preconditions.checkArgument(issueAt > 0);

      long id;
      try {
        id = Long.parseLong(userId);
      } catch (NumberFormatException e) {
        throw new IllegalArgumentException("Invalid user id.");
      }
      User user = UserManager.getUser(id);
      if (user == null) {
        throw new IllegalArgumentException("Invalid user id.");
      }

      return user.getLastBigChangeTime() > issueAt;
    }