{"version":3,"file":"callback.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/import/wordpress-plugin/callback.ts"],"sourcesContent":["/**\n * WordPress Application Password OAuth callback\n *\n * GET /_emdash/api/import/wordpress-plugin/callback\n *\n * WordPress redirects here after user approves the application password.\n * We receive the credentials and redirect to the admin import UI with a token.\n */\n\nimport type { APIRoute } from \"astro\";\n\nimport { encodeBase64 } from \"#utils/base64.js\";\n\nexport const prerender = false;\n\nexport const GET: APIRoute = async ({ url, cookies, redirect }) => {\n\t// WordPress sends these params on success:\n\t// - site_url: The WordPress site URL\n\t// - user_login: The username\n\t// - password: The newly created application password\n\t//\n\t// On rejection, it redirects to reject_url (if provided) or just doesn't include credentials\n\n\tconst siteUrl = url.searchParams.get(\"site_url\");\n\tconst userLogin = url.searchParams.get(\"user_login\");\n\tconst password = url.searchParams.get(\"password\");\n\n\t// Check if this is a rejection (no credentials)\n\tif (!siteUrl || !userLogin || !password) {\n\t\treturn redirect(\"/_emdash/admin/import/wordpress?error=auth_rejected\");\n\t}\n\n\t// Create the Basic Auth token\n\tconst token = encodeBase64(`${userLogin}:${password}`);\n\n\t// Store credentials in a short-lived cookie (5 minutes)\n\t// This allows the import UI to retrieve them\n\tconst authData = JSON.stringify({\n\t\tsiteUrl,\n\t\tuserLogin,\n\t\ttoken,\n\t\ttimestamp: Date.now(),\n\t});\n\n\t// Base64 encode the auth data for cookie storage\n\tconst encodedAuth = encodeBase64(authData);\n\n\tcookies.set(\"emdash_wp_auth\", encodedAuth, {\n\t\tpath: \"/_emdash/\",\n\t\tmaxAge: 300, // 5 minutes\n\t\thttpOnly: false, // Needs to be readable by JS\n\t\tsecure: url.protocol === \"https:\",\n\t\tsameSite: \"lax\",\n\t});\n\n\t// Redirect to import UI - it will pick up the cookie\n\treturn redirect(\"/_emdash/admin/import/wordpress?auth=success\");\n};\n"],"mappings":";;;AAaA,MAAa,YAAY;AAEzB,MAAa,MAAgB,OAAO,EAAE,KAAK,SAAS,eAAe;CAQlE,MAAM,UAAU,IAAI,aAAa,IAAI,WAAW;CAChD,MAAM,YAAY,IAAI,aAAa,IAAI,aAAa;CACpD,MAAM,WAAW,IAAI,aAAa,IAAI,WAAW;AAGjD,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAC9B,QAAO,SAAS,sDAAsD;CAIvE,MAAM,QAAQ,aAAa,GAAG,UAAU,GAAG,WAAW;CAYtD,MAAM,cAAc,aARH,KAAK,UAAU;EAC/B;EACA;EACA;EACA,WAAW,KAAK,KAAK;EACrB,CAAC,CAGwC;AAE1C,SAAQ,IAAI,kBAAkB,aAAa;EAC1C,MAAM;EACN,QAAQ;EACR,UAAU;EACV,QAAQ,IAAI,aAAa;EACzB,UAAU;EACV,CAAC;AAGF,QAAO,SAAS,+CAA+C"}