Use musicSession cookie for auth
This commit is contained in:
1 parent
e2c47e6d0f
commit
e89463591c
8 files changed
+80
-104
No files matched your search
+11
-11
@@ -60,23 +60,23 @@ export const cfetch = async <DataT = any>(
|
||||
headers.delete("Content-Type")
|
||||
}
|
||||
|
||||
if (authorize) {
|
||||
const { sessionToken, refreshSessionToken } = useAuth()
|
||||
let token = sessionToken.value
|
||||
|
||||
if (!token) token = await refreshSessionToken()
|
||||
if (token) headers.set("Authorization", `Bearer ${token}`)
|
||||
}
|
||||
|
||||
try {
|
||||
return (await $fetch(toApiUrl(url), requestOptions as any)) as DataT
|
||||
} catch (error: any) {
|
||||
if (!authorize || error?.response?.status !== 401) throw error
|
||||
|
||||
const token = await useAuth().refreshSessionToken()
|
||||
if (!token) throw error
|
||||
const refreshed = await useAuth().refreshSession()
|
||||
if (!refreshed.ok) throw error
|
||||
|
||||
if (import.meta.server && refreshed.sessionCookie) {
|
||||
const cookies = (headers.get("cookie") ?? "")
|
||||
.split(";")
|
||||
.map((cookie) => cookie.trim())
|
||||
.filter((cookie) => cookie && !cookie.startsWith("musicSession="))
|
||||
cookies.push(refreshed.sessionCookie)
|
||||
headers.set("cookie", cookies.join("; "))
|
||||
}
|
||||
|
||||
headers.set("Authorization", `Bearer ${token}`)
|
||||
return (await $fetch(toApiUrl(url), requestOptions as any)) as DataT
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user