{"version":3,"file":"handleSignOutCallbackRequest.mjs","sources":["../../../../src/auth/handlers/handleSignOutCallbackRequest.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AUTH_KEY_PREFIX, createKeysForAuthStorage, } from 'aws-amplify/adapter-core';\nimport { IS_SIGNING_OUT_COOKIE_NAME, IS_SIGNING_OUT_REDIRECTING_COOKIE_NAME, } from '../constant';\nimport { appendSetCookieHeaders, createAuthFlowProofCookiesRemoveOptions, createRedirectionIntermediary, createTokenCookiesRemoveOptions, createTokenRemoveCookies, getCookieValuesFromRequest, getRedirectOrDefault, resolveRedirectSignOutUrl, revokeAuthNTokens, } from '../utils';\nexport const handleSignOutCallbackRequest = async ({ request, handlerInput, userPoolClientId, oAuthConfig, setCookieOptions, origin, }) => {\n    const { [IS_SIGNING_OUT_COOKIE_NAME]: isSigningOut, [IS_SIGNING_OUT_REDIRECTING_COOKIE_NAME]: isSigningOutRedirecting, } = getCookieValuesFromRequest(request, [\n        IS_SIGNING_OUT_COOKIE_NAME,\n        IS_SIGNING_OUT_REDIRECTING_COOKIE_NAME,\n    ]);\n    if (!isSigningOut) {\n        return new Response(null, { status: 400 });\n    }\n    // When Cognito /logout endpoint redirects back, response has code 302, the browsers (Safari and Firefox)\n    // assume the incoming request is a cross-site request and block the cookies.\n    // To workaround this issue, we send an intermediate page with 200 response. This page will redirect\n    // to the /sign-out-callback (this handler) again, since it's the same-site request, the cookies will be\n    // sent back to the server.\n    if (isSigningOutRedirecting) {\n        const headers = new Headers();\n        headers.set('Content-Type', 'text/html');\n        appendSetCookieHeaders(headers, \n        // remove the IS_SIGNING_OUT_REDIRECTING_COOKIE_NAME cookie to the next request to this\n        // handler can proceed.\n        createTokenRemoveCookies([IS_SIGNING_OUT_REDIRECTING_COOKIE_NAME]), createAuthFlowProofCookiesRemoveOptions(setCookieOptions));\n        return new Response(createRedirectionIntermediary({\n            redirectTo: resolveRedirectSignOutUrl(origin, oAuthConfig),\n        }), {\n            status: 200,\n            headers,\n        });\n    }\n    const lastAuthUserCookieName = `${AUTH_KEY_PREFIX}.${userPoolClientId}.LastAuthUser`;\n    const { [lastAuthUserCookieName]: username } = getCookieValuesFromRequest(request, [lastAuthUserCookieName]);\n    if (!username) {\n        return new Response(null, {\n            status: 302,\n            headers: new Headers({\n                Location: getRedirectOrDefault(handlerInput.redirectOnSignOutComplete),\n            }),\n        });\n    }\n    const authCookiesKeys = createKeysForAuthStorage(AUTH_KEY_PREFIX, `${userPoolClientId}.${username}`);\n    const { [authCookiesKeys.refreshToken]: refreshToken } = getCookieValuesFromRequest(request, [authCookiesKeys.refreshToken]);\n    if (!refreshToken) {\n        return new Response(null, {\n            status: 302,\n            headers: new Headers({\n                Location: getRedirectOrDefault(handlerInput.redirectOnSignOutComplete),\n            }),\n        });\n    }\n    const result = await revokeAuthNTokens({\n        refreshToken,\n        userPoolClientId,\n        endpointDomain: oAuthConfig.domain,\n    });\n    if (result.error) {\n        return new Response(result.error, { status: 500 });\n    }\n    const headers = new Headers();\n    appendSetCookieHeaders(headers, [\n        ...createTokenRemoveCookies([\n            authCookiesKeys.accessToken,\n            authCookiesKeys.idToken,\n            authCookiesKeys.refreshToken,\n            lastAuthUserCookieName,\n            IS_SIGNING_OUT_COOKIE_NAME,\n        ]),\n    ], createTokenCookiesRemoveOptions(setCookieOptions));\n    headers.set('Location', getRedirectOrDefault(handlerInput.redirectOnSignOutComplete));\n    return new Response(null, {\n        status: 302,\n        headers,\n    });\n};\n"],"names":[],"mappings":"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"}