Files
warren/frontend/composables/useAuthSession.ts
2025-08-29 15:32:23 +02:00

39 lines
1.0 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;
const cookie = `authorization=WarrenAuth ${value.id}; path=/; SameSite=Lax; Secure;`;
document.cookie = cookie;
}
export function clearAuthSession() {
useAuthSession().value = null;
document.cookie = '';
}