Files
warren/frontend/composables/useAuthSession.ts

48 lines
1.3 KiB
TypeScript

import type { AuthSession, AuthUser } from '#shared/types/auth';
const SAME_SITE_SETTINGS = ['strict', 'lax', 'none'] as const;
export function useAuthSession() {
const config = useRuntimeConfig().public;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const sameSite = SAME_SITE_SETTINGS.includes(config.cookiesSameSite as any)
? (config.cookiesSameSite as (typeof SAME_SITE_SETTINGS)[number])
: 'strict';
return useCookie('auth_session', {
default: () => null as AuthSession | null,
secure: config.cookiesSecure,
sameSite,
path: '/',
httpOnly: false,
});
}
export function setAuthSession(value: {
type: 'WarrenAuth';
id: string;
user: AuthUser;
expiresAt: number;
}) {
useAuthSession().value = value;
let cookie = `authorization=WarrenAuth ${value.id}; path=/; SameSite=Lax; Secure;`;
const config = useRuntimeConfig().public;
console.log('config', config);
const cookieDomain = config.authCookieDomain;
if (cookieDomain != null && cookieDomain.length > 0) {
cookie += ` domain=${cookieDomain}`;
}
console.log(cookie);
document.cookie = cookie;
}
export function clearAuthSession() {
useAuthSession().value = null;
document.cookie = '';
}