{"version":3,"file":"handleSignOutCallbackRequestForPagesRouter.mjs","sources":["../../../../src/auth/handlers/handleSignOutCallbackRequestForPagesRouter.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 { appendSetCookieHeadersToNextApiResponse, createAuthFlowProofCookiesRemoveOptions, createRedirectionIntermediary, createTokenCookiesRemoveOptions, createTokenRemoveCookies, getCookieValuesFromNextApiRequest, getRedirectOrDefault, resolveRedirectSignOutUrl, revokeAuthNTokens, } from '../utils';\nexport const handleSignOutCallbackRequestForPagesRouter = async ({ request, response, handlerInput, userPoolClientId, oAuthConfig, setCookieOptions, origin, }) => {\n    const { [IS_SIGNING_OUT_COOKIE_NAME]: isSigningOut, [IS_SIGNING_OUT_REDIRECTING_COOKIE_NAME]: isSigningOutRedirecting, } = getCookieValuesFromNextApiRequest(request, [\n        IS_SIGNING_OUT_COOKIE_NAME,\n        IS_SIGNING_OUT_REDIRECTING_COOKIE_NAME,\n    ]);\n    if (!isSigningOut) {\n        response.status(400).end();\n        return;\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        appendSetCookieHeadersToNextApiResponse(response, \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        response\n            .appendHeader('Content-Type', 'text/html')\n            .status(200)\n            .send(createRedirectionIntermediary({\n            redirectTo: resolveRedirectSignOutUrl(origin, oAuthConfig),\n        }));\n        return;\n    }\n    const lastAuthUserCookieName = `${AUTH_KEY_PREFIX}.${userPoolClientId}.LastAuthUser`;\n    const { [lastAuthUserCookieName]: username } = getCookieValuesFromNextApiRequest(request, [lastAuthUserCookieName]);\n    if (!username) {\n        response.redirect(302, getRedirectOrDefault(handlerInput.redirectOnSignOutComplete));\n        return;\n    }\n    const authCookiesKeys = createKeysForAuthStorage(AUTH_KEY_PREFIX, `${userPoolClientId}.${username}`);\n    const { [authCookiesKeys.refreshToken]: refreshToken } = getCookieValuesFromNextApiRequest(request, [\n        authCookiesKeys.refreshToken,\n    ]);\n    if (!refreshToken) {\n        response.redirect(302, getRedirectOrDefault(handlerInput.redirectOnSignOutComplete));\n        return;\n    }\n    const result = await revokeAuthNTokens({\n        refreshToken,\n        userPoolClientId,\n        endpointDomain: oAuthConfig.domain,\n    });\n    if (result.error) {\n        response.status(500).send(result.error);\n        return;\n    }\n    appendSetCookieHeadersToNextApiResponse(response, [\n        ...createTokenRemoveCookies([\n            authCookiesKeys.accessToken,\n            authCookiesKeys.idToken,\n            authCookiesKeys.refreshToken,\n            lastAuthUserCookieName,\n            IS_SIGNING_OUT_COOKIE_NAME,\n        ]),\n    ], createTokenCookiesRemoveOptions(setCookieOptions));\n    response.redirect(302, getRedirectOrDefault(handlerInput.redirectOnSignOutComplete));\n};\n"],"names":[],"mappings":"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"}