28 lines
853 B
TypeScript
28 lines
853 B
TypeScript
import type { Response } from 'express';
|
|
|
|
const accessCookie = 'sinka_access';
|
|
const refreshCookie = 'sinka_refresh';
|
|
|
|
function cookieBase() {
|
|
return {
|
|
httpOnly: true,
|
|
sameSite: 'lax' as const,
|
|
secure: process.env.NODE_ENV === 'production',
|
|
path: '/',
|
|
};
|
|
}
|
|
|
|
export function setAuthCookies(res: Response, accessToken: string, refreshToken: string): void {
|
|
res.cookie(accessCookie, accessToken, { ...cookieBase(), maxAge: 15 * 60 * 1000 });
|
|
res.cookie(refreshCookie, refreshToken, { ...cookieBase(), maxAge: 7 * 24 * 60 * 60 * 1000 });
|
|
}
|
|
|
|
export function clearAuthCookies(res: Response): void {
|
|
res.clearCookie(accessCookie, cookieBase());
|
|
res.clearCookie(refreshCookie, cookieBase());
|
|
}
|
|
|
|
export function readRefreshCookie(cookies: Record<string, string> | undefined): string | undefined {
|
|
return cookies?.[refreshCookie];
|
|
}
|