export const generateCookieConfig = (
maxAge: number,
isLocalhostOrigin: boolean,
): CookieOptions => {
const props: CookieOptions = {
httpOnly: true,
sameSite: process.env.NODE_ENV === 'production' ? 'strict' : 'none',
secure: true,
maxAge,
};
if (isLocalhostOrigin) {
if (process.env.NODE_ENV === 'staging') {
props.httpOnly = true;
props.secure = true;
props.sameSite = 'none';
}
return props;
}
if (process.env.IS_LOCALHOST) return props;
props.domain = process.env.FRONT_END_URL;
return props;
};
export function generateAuthenticationCookiesOn(
response: Response,
token: SignInToken,
store: AuthorUserContext,
) {
const { accessToken, refreshToken } = token.value;
const isLocalhostOrigin =
store?.userDnsOrigin?.includes('localhost') ?? false;
const acCookies = generateCookieConfig(minutes(60), isLocalhostOrigin);
response.cookie(AccessTokenCookieKey, accessToken, acCookies);
if (refreshToken) {
response.cookie(
RefreshTokenCookieKey,
refreshToken,
generateCookieConfig(RefreshToken.EXPIRES_AT, isLocalhostOrigin),
);
}
}