32 lines
806 B
JavaScript
32 lines
806 B
JavaScript
import { sha256 } from '@oslojs/crypto/sha2';
|
|
import { encodeBase64url, encodeHexLowerCase } from '@oslojs/encoding';
|
|
|
|
const DAY_IN_MS = 1000 * 60 * 60 * 24;
|
|
|
|
export const sessionCookieName = 'auth-session';
|
|
|
|
export function generateSessionToken() {
|
|
const bytes = crypto.getRandomValues(new Uint8Array(18));
|
|
const token = encodeBase64url(bytes);
|
|
return token;
|
|
}
|
|
|
|
/**
|
|
* @param {import("@sveltejs/kit").RequestEvent} event
|
|
* @param {string} token
|
|
* @param {Date} expiresAt
|
|
*/
|
|
export function setSessionTokenCookie(event, token, expiresAt) {
|
|
event.cookies.set(sessionCookieName, token, {
|
|
expires: expiresAt,
|
|
path: '/'
|
|
});
|
|
}
|
|
|
|
/** @param {import("@sveltejs/kit").RequestEvent} event */
|
|
export function deleteSessionTokenCookie(event) {
|
|
event.cookies.delete(sessionCookieName, {
|
|
path: '/'
|
|
});
|
|
}
|