initial commit. Cloned timetracker repository
This commit is contained in:
66
bo/src/composable/useCookie.ts
Normal file
66
bo/src/composable/useCookie.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user