{"version":3,"file":"handleSignInCallbackRequest.mjs","sources":["../../../../src/auth/handlers/handleSignInCallbackRequest.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { PKCE_COOKIE_NAME, SIGN_IN_TIMEOUT_ERROR_CODE, SIGN_IN_TIMEOUT_ERROR_MESSAGE, STATE_COOKIE_NAME, } from '../constant';\nimport { appendSetCookieHeaders, createAuthFlowProofCookiesRemoveOptions, createErrorSearchParamsString, createRedirectionIntermediary, createSignInFlowProofCookies, createTokenCookies, createTokenCookiesSetOptions, exchangeAuthNTokens, getCookieValuesFromRequest, getRedirectOrDefault, parseSignInCallbackUrl, resolveRedirectSignInUrl, } from '../utils';\nexport const handleSignInCallbackRequest = async ({ request, handlerInput, userPoolClientId, oAuthConfig, setCookieOptions, origin, }) => {\n    const { code, state, error, errorDescription } = parseSignInCallbackUrl(request.url);\n    if (errorDescription || error) {\n        const searchParamsString = createErrorSearchParamsString({\n            error,\n            errorDescription,\n        });\n        return new Response(null, {\n            status: 302,\n            headers: new Headers({\n                location: `${getRedirectOrDefault(handlerInput.redirectOnSignOutComplete)}?${searchParamsString}`,\n            }),\n        });\n    }\n    if (!code || !state) {\n        return new Response(null, { status: 400 });\n    }\n    const { [PKCE_COOKIE_NAME]: clientPkce, [STATE_COOKIE_NAME]: clientState } = getCookieValuesFromRequest(request, [PKCE_COOKIE_NAME, STATE_COOKIE_NAME]);\n    // The state and pkce cookies are removed from cookie store after 5 minutes\n    if (!clientState || !clientPkce) {\n        const searchParamsString = createErrorSearchParamsString({\n            error: SIGN_IN_TIMEOUT_ERROR_CODE,\n            errorDescription: SIGN_IN_TIMEOUT_ERROR_MESSAGE,\n        });\n        return new Response(null, {\n            status: 302,\n            headers: new Headers({\n                location: `${getRedirectOrDefault(handlerInput.redirectOnSignOutComplete)}?${searchParamsString}`,\n            }),\n        });\n    }\n    // Most likely the cookie has been tampered\n    if (clientState !== state) {\n        return new Response(null, { status: 400 });\n    }\n    const tokensPayload = await exchangeAuthNTokens({\n        redirectUri: resolveRedirectSignInUrl(origin, oAuthConfig),\n        userPoolClientId,\n        oAuthConfig,\n        code,\n        codeVerifier: clientPkce,\n    });\n    if ('error' in tokensPayload) {\n        return new Response(tokensPayload.error, { status: 500 });\n    }\n    const headers = new Headers();\n    appendSetCookieHeaders(headers, createTokenCookies({\n        tokensPayload,\n        userPoolClientId,\n    }), createTokenCookiesSetOptions(setCookieOptions, origin));\n    appendSetCookieHeaders(headers, createSignInFlowProofCookies({ state: '', pkce: '' }), createAuthFlowProofCookiesRemoveOptions(setCookieOptions));\n    // When Cognito redirects back to `/sign-in-callback`, the referer is Cognito\n    // endpoint. If redirect end user to `redirectOnSignInComplete` from this point,\n    // the referer remains the same.\n    // When authN token cookies set as `sameSite: 'strict'`, this may cause the\n    // authN tokens cookies set with the redirect response not to be sent to the\n    // server. Hence, sending a html page with status 200 to the client, and perform\n    // the redirection on the client side.\n    headers.set('Content-Type', 'text/html');\n    return new Response(createRedirectionIntermediary({\n        redirectTo: getRedirectOrDefault(handlerInput.redirectOnSignInComplete),\n    }), {\n        status: 200,\n        headers,\n    });\n};\n"],"names":[],"mappings":"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"}