@Override public Response cookie(final String name, final String value) { rsp.cookie(name, value); return this; }
@Override public Response cookie(final Cookie cookie) { rsp.cookie(cookie); return this; }
@Override public Response cookie(final Definition cookie) { rsp.cookie(cookie); return this; }
/** * Adds the specified cookie to the response. * * @param name A cookie's name. * @param value A cookie's value. * @return This response. */ @Nonnull default Response cookie(final String name, final String value) { return cookie(new Cookie.Definition(name, value)); }
@Override public Session create(final Request req, final Response rsp) { Session session = new SessionImpl.Builder(resolver, true, store.generateID(), timeout) .build(); log.debug("session created: {}", session); Cookie.Definition cookie = cookie(session); log.debug(" new cookie: {}", cookie); rsp.cookie(cookie); return session; }
@Override public void renewId(Session session, Response rsp) { destroy(session); ((SessionImpl) session).renewId(store.generateID()); Cookie.Definition cookie = cookie(session); log.debug(" renewing cookie: {}", cookie); rsp.cookie(cookie); }
private Route.After saveCookie() { return (req, rsp, result) -> { req.ifSession().ifPresent(session -> { Optional<String> value = req.cookie(cookie.name().get()).toOptional(); Map<String, String> initial = value .map(this::attributes) .orElse(Collections.emptyMap()); Map<String, String> attributes = session.attributes(); // is dirty? boolean dirty = !initial.equals(attributes); log.debug("session dirty: {}", dirty); if (dirty) { log.debug("saving session cookie"); String encoded = Cookie.URL_ENCODER.apply(attributes); String signed = Cookie.Signature.sign(encoded, secret); rsp.cookie(new Cookie.Definition(cookie).value(signed)); } else if (timeout > 0) { // touch session value.ifPresent(raw -> rsp.cookie(new Cookie.Definition(cookie).value(raw))); } }); return result; }; }
@Override public Session get(final Request req, final Response rsp) { return req.cookie(template.name().get()).toOptional() .map(cookie -> { String sessionId = unsign(cookie); log.debug("loading session: {}", sessionId); Session session = store.get( new SessionImpl.Builder(resolver, false, sessionId, timeout)); if (timeout > 0 && session != null) { Cookie.Definition setCookie = cookie(session); log.debug(" touch cookie: {}", setCookie); rsp.cookie(setCookie); } return session; }).orElse(null); }
@Override public void destroy() { if (this.session != null) { // clear attributes log.debug("destroying session: {}", session.id()); session.destroy(); // reset req session resetSession.run(); // clear cookie org.jooby.Cookie.Definition cookie = sm.cookie(); log.debug(" removing cookie: {}", cookie); rsp.cookie(cookie.maxAge(0)); // destroy session from storage sm.destroy(session); // null everything this.resetSession = null; this.rsp = null; this.session = null; this.sm = null; } }
private Route.After finalizeFlash(final Map<String, String> initialScope, final FlashMap scope) { return (req, rsp, result) -> { if (scope.keep) { // keep values, no matter what if (scope.size() > 0) { rsp.cookie(new Cookie.Definition(template).value(encoder.apply(scope))); } else if (initialScope.size() > 0) { rsp.cookie(new Cookie.Definition(template).maxAge(0)); } } else { // 1. no change detect if (scope.equals(initialScope)) { // 1.a. existing data available, discard if (scope.size() > 0) { rsp.cookie(new Cookie.Definition(template).maxAge(0)); } } else { // 2. change detected if (scope.size() == 0) { // 2.a everything was removed from app logic rsp.cookie(new Cookie.Definition(template).maxAge(0)); } else { // 2.b there is something to see in the next request rsp.cookie(new Cookie.Definition(template).value(encoder.apply(scope))); } } } return result; }; }
@Override public void addResponseCookie(Cookie cookie) { org.jooby.Cookie.Definition c = new org.jooby.Cookie.Definition(cookie.getName(), cookie.getValue()); Optional.ofNullable(cookie.getDomain()).ifPresent(c::domain); Optional.ofNullable(cookie.getPath()).ifPresent(c::path); c.httpOnly(cookie.isHttpOnly()); c.maxAge(cookie.getMaxAge()); c.secure(cookie.isSecure()); rsp.cookie(c); }
@Override public void addResponseCookie(final Cookie cookie) { Definition c = new Definition(cookie.getName(), cookie.getValue()); Optional.ofNullable(cookie.getDomain()).ifPresent(c::domain); Optional.ofNullable(cookie.getPath()).ifPresent(c::path); c.httpOnly(cookie.isHttpOnly()); c.maxAge(cookie.getMaxAge()); c.secure(cookie.isSecure()); rsp.cookie(c); }
@Override public Response cookie(final Cookie cookie) { rsp.cookie(cookie); return this; }
@Override public Response cookie(final Definition cookie) { rsp.cookie(cookie); return this; }
@Override public Response cookie(final String name, final String value) { rsp.cookie(name, value); return this; }
/** * Adds the specified cookie to the response. * * @param name A cookie's name. * @param value A cookie's value. * @return This response. */ @Nonnull default Response cookie(final String name, final String value) { return cookie(new Cookie.Definition(name, value)); }
@Override public Session create(final Request req, final Response rsp) { Session session = new SessionImpl.Builder(resolver, true, store.generateID(), timeout) .build(); log.debug("session created: {}", session); Cookie.Definition cookie = cookie(session); log.debug(" new cookie: {}", cookie); rsp.cookie(cookie); return session; }
@Override public void renewId(Session session, Response rsp) { destroy(session); ((SessionImpl) session).renewId(store.generateID()); Cookie.Definition cookie = cookie(session); log.debug(" renewing cookie: {}", cookie); rsp.cookie(cookie); }
@Override public Session get(final Request req, final Response rsp) { return req.cookie(template.name().get()).toOptional() .map(cookie -> { String sessionId = unsign(cookie); log.debug("loading session: {}", sessionId); Session session = store.get( new SessionImpl.Builder(resolver, false, sessionId, timeout)); if (timeout > 0 && session != null) { Cookie.Definition setCookie = cookie(session); log.debug(" touch cookie: {}", setCookie); rsp.cookie(setCookie); } return session; }).orElse(null); }
@Override public void addResponseCookie(final Cookie cookie) { Definition c = new Definition(cookie.getName(), cookie.getValue()); Optional.ofNullable(cookie.getDomain()).ifPresent(c::domain); Optional.ofNullable(cookie.getPath()).ifPresent(c::path); c.httpOnly(cookie.isHttpOnly()); c.maxAge(cookie.getMaxAge()); c.secure(cookie.isSecure()); rsp.cookie(c); }