improve oauth postMessage resiliency
This commit is contained in:
@@ -174,13 +174,21 @@
|
||||
}
|
||||
|
||||
function popupListener(event) {
|
||||
console.log('Received oauth popup message')
|
||||
let data = event.data
|
||||
if (event.origin == null || event.origin !== window.location.origin) {
|
||||
console.log(
|
||||
'Received oauth popup message from different origin',
|
||||
event.origin,
|
||||
window.location.origin
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
window.removeEventListener('message', popupListener)
|
||||
processPopupData(data)
|
||||
if (data.type == 'success' || data.type == 'error') {
|
||||
window.removeEventListener('message', popupListener)
|
||||
processPopupData(data)
|
||||
}
|
||||
}
|
||||
|
||||
function handleStorageEvent(event) {
|
||||
@@ -205,6 +213,7 @@
|
||||
})
|
||||
|
||||
function processPopupData(data) {
|
||||
console.log('Processing oauth popup data')
|
||||
if (data.type === 'error') {
|
||||
sendUserToast(data.error, true)
|
||||
step = 2
|
||||
|
||||
@@ -35,8 +35,10 @@
|
||||
const message = { type: 'success', res, resource_type: client_name }
|
||||
sendUserToast('successful', false)
|
||||
if (window.opener) {
|
||||
console.log('Sending oauth popup message')
|
||||
window.opener?.postMessage(message, '*')
|
||||
} else {
|
||||
console.log('Storing oauth popup message in local storage')
|
||||
localStorage.setItem('oauth-callback', JSON.stringify(message))
|
||||
}
|
||||
// goto(`/resources?resource_type=${client_name}`)
|
||||
@@ -44,8 +46,10 @@
|
||||
sendUserToast(`Error trying to add ${client_name} connection: ${e.body}`, true)
|
||||
const message = { type: 'error', error: `Error parsing the response token, ${e.body}` }
|
||||
if (window.opener) {
|
||||
console.log('Sending oauth popup message')
|
||||
window.opener?.postMessage(message, '*')
|
||||
} else {
|
||||
console.log('Storing oauth popup message in local storage')
|
||||
localStorage.setItem('oauth-callback', JSON.stringify(message))
|
||||
}
|
||||
|
||||
@@ -55,14 +59,15 @@
|
||||
sendUserToast('Missing code or state as query params', true)
|
||||
const message = { type: 'error', error: 'Missing code or state as query params' }
|
||||
if (window.opener) {
|
||||
console.log('Sending oauth popup message')
|
||||
window.opener?.postMessage(message, '*')
|
||||
} else {
|
||||
console.log('Storing oauth popup message in local storage')
|
||||
localStorage.setItem(
|
||||
'oauth-callback',
|
||||
JSON.stringify({ type: 'error', error: 'Missing code or state as query params' })
|
||||
)
|
||||
}
|
||||
window.opener?.postMessage(message, '*')
|
||||
// goto('/resources')
|
||||
}
|
||||
close()
|
||||
|
||||
Reference in New Issue
Block a user