next-session
Version:
Simple promise-based session for Next.js
29 lines (28 loc) • 807 B
JavaScript
import c from "cookie";
export function hash(sess) {
return JSON.stringify(sess, (key, val) => key === "cookie" ? undefined : val);
}
export function commitHeader(res, name, {
cookie,
id
}, encodeFn) {
if (res.headersSent) return;
const cookieStr = c.serialize(name, encodeFn ? encodeFn(id) : id, {
path: cookie.path,
httpOnly: cookie.httpOnly,
expires: cookie.expires,
domain: cookie.domain,
sameSite: cookie.sameSite,
secure: cookie.secure
});
const prevSetCookie = res.getHeader("set-cookie");
if (prevSetCookie) {
if (Array.isArray(prevSetCookie)) {
res.setHeader("set-cookie", [...prevSetCookie, cookieStr]);
} else {
res.setHeader("set-cookie", [prevSetCookie, cookieStr]);
}
} else {
res.setHeader("set-cookie", cookieStr);
}
}