Files
b2b/bo/src/composable/useCookie.ts
2026-03-10 09:02:57 +01:00

67 lines
1.4 KiB
TypeScript

export const useCookie = () => {
function getCookie(name: string): string | null {
const cookies = document.cookie ? document.cookie.split('; ') : []
for (const cookie of cookies) {
const [key, ...rest] = cookie.split('=')
if (key === name) {
return decodeURIComponent(rest.join('='))
}
}
return null
}
function setCookie(
name: string,
value: string,
options?: {
days?: number
path?: string
domain?: string
secure?: boolean
sameSite?: 'Lax' | 'Strict' | 'None'
},
) {
let cookie = `${name}=${encodeURIComponent(value)}`
if (options?.days) {
const date = new Date()
date.setTime(date.getTime() + options.days * 24 * 60 * 60 * 1000)
cookie += `; expires=${date.toUTCString()}`
}
cookie += `; path=${options?.path ?? '/'}`
if (options?.domain) {
cookie += `; domain=${options.domain}`
}
if (options?.secure) {
cookie += `; Secure`
}
if (options?.sameSite) {
cookie += `; SameSite=${options.sameSite}`
}
document.cookie = cookie
}
function deleteCookie(name: string, path: string = '/', domain?: string) {
let cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=${path}`
if (domain) {
cookie += `; domain=${domain}`
}
document.cookie = cookie
}
return {
getCookie,
setCookie,
deleteCookie,
}
}