24 lines
735 B
JavaScript
24 lines
735 B
JavaScript
|
|
let bearerToken = null
|
||
|
|
|
||
|
|
self.addEventListener('message', (e) => {
|
||
|
|
if (e.data?.type === 'SET_TOKEN') {
|
||
|
|
bearerToken = e.data.token
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
self.addEventListener('fetch', (e) => {
|
||
|
|
const url = new URL(e.request.url)
|
||
|
|
// Only intercept /api/ requests to the same origin
|
||
|
|
if (url.origin !== self.location.origin || !url.pathname.startsWith('/api/')) return
|
||
|
|
if (!bearerToken) return
|
||
|
|
|
||
|
|
const authedRequest = new Request(e.request, {
|
||
|
|
headers: new Headers(e.request.headers),
|
||
|
|
})
|
||
|
|
authedRequest.headers.set('Authorization', `Bearer ${bearerToken}`)
|
||
|
|
e.respondWith(fetch(authedRequest))
|
||
|
|
})
|
||
|
|
|
||
|
|
self.addEventListener('install', () => self.skipWaiting())
|
||
|
|
self.addEventListener('activate', (e) => e.waitUntil(self.clients.claim()))
|