Example #1
0
 static Flash restore() {
   try {
     Flash flash = new Flash();
     Http.Cookie cookie = Http.Request.current().cookies.get(COOKIE_PREFIX + "_FLASH");
     if (cookie != null) {
       CookieDataCodec.decode(flash.data, cookie.value);
     }
     return flash;
   } catch (Exception e) {
     throw new UnexpectedException("Flash corrupted", e);
   }
 }
Example #2
0
    static Session restore() {
      try {
        Session session = new Session();
        Http.Cookie cookie = Http.Request.current().cookies.get(COOKIE_PREFIX + "_SESSION");
        final int duration = Time.parseDuration(COOKIE_EXPIRE);
        final long expiration = (duration * 1000l);

        if (cookie != null
            && Play.started
            && cookie.value != null
            && !cookie.value.trim().equals("")) {
          String value = cookie.value;
          int firstDashIndex = value.indexOf("-");
          if (firstDashIndex > -1) {
            String sign = value.substring(0, firstDashIndex);
            String data = value.substring(firstDashIndex + 1);
            if (CookieDataCodec.safeEquals(sign, Crypto.sign(data, Play.secretKey.getBytes()))) {
              CookieDataCodec.decode(session.data, data);
            }
          }
          if (COOKIE_EXPIRE != null) {
            // Verify that the session contains a timestamp, and that it's not expired
            if (!session.contains(TS_KEY)) {
              session = new Session();
            } else {
              if ((Long.parseLong(session.get(TS_KEY))) < System.currentTimeMillis()) {
                // Session expired
                session = new Session();
              }
            }
            session.put(TS_KEY, System.currentTimeMillis() + expiration);
          } else {
            // Just restored. Nothing changed. No cookie-expire.
            session.changed = false;
          }
        } else {
          // no previous cookie to restore; but we may have to set the timestamp in the new cookie
          if (COOKIE_EXPIRE != null) {
            session.put(TS_KEY, (System.currentTimeMillis() + expiration));
          }
        }

        return session;
      } catch (Exception e) {
        throw new UnexpectedException(
            "Corrupted HTTP session from " + Http.Request.current().remoteAddress, e);
      }
    }