diff --git a/bin/init.js b/bin/init.js index 2f9baed..9120f53 100644 --- a/bin/init.js +++ b/bin/init.js @@ -20,8 +20,6 @@ const blue = '\x1b[34m'; const reset = '\x1b[0m'; const dim = '\x1b[2m'; const bright = '\x1b[1m'; -const yellow = '\x1b[33m'; -const italic = '\x1b[3m'; function printWelcomeMessage() { console.log(` @@ -235,65 +233,6 @@ export async function init() { ]); answers.useTunnel = hostingAnswer.useTunnel; - // Ask for seed phrase last - const seedPhraseAnswer = await inquirer.prompt([ - { - type: 'password', - name: 'seedPhrase', - message: `Enter your Farcaster custody account seed phrase to generate a signed manifest for your frame\n(optional -- leave blank to create an unsigned frame)\n⚠️ ${yellow}${italic}seed phrase is only ever stored in .env.local${reset} ⚠️\nSeed phrase:`, - default: null - } - ]); - answers.seedPhrase = seedPhraseAnswer.seedPhrase; - - let account; - let custodyAddress; - let fid; - - if (answers.seedPhrase) { - let fidLookupSuccessful = false; - while (!fidLookupSuccessful) { - try { - // Generate custody address from seed phrase - account = mnemonicToAccount(answers.seedPhrase); - custodyAddress = account.address; - - // Look up FID using custody address - console.log('\nUsing seed phrase to look up FID by custody address...'); - fid = await lookupFidByCustodyAddress(custodyAddress, neynarApiKey ?? 'FARCASTER_V2_FRAMES_DEMO'); - - if (!fid) { - throw new Error('No FID found for this custody address'); - } - - fidLookupSuccessful = true; - console.log(`\n✅ Successfully found FID ${fid} for custody address ${custodyAddress}`); - } catch (error) { - console.error('\n❌ Error:', error.message); - console.log('\n⚠️ Could not find an FID for this seed phrase. This usually means:'); - console.log('1. The seed phrase might be incorrect'); - console.log('2. The account might not be registered on Farcaster'); - console.log('3. The custody address might not be linked to a Farcaster account\n'); - - // Ask for seed phrase again - const retryAnswer = await inquirer.prompt([ - { - type: 'password', - name: 'seedPhrase', - message: 'Please enter your seed phrase again (or leave empty to continue without signing):\n', - default: null - } - ]); - - if (!retryAnswer.seedPhrase) { - console.log('\n⚠️ Continuing without frame signing...'); - break; - } - answers.seedPhrase = retryAnswer.seedPhrase; - } - } - } - const projectName = answers.projectName; const projectDirName = projectName.replace(/\s+/g, '-').toLowerCase(); const projectPath = path.join(process.cwd(), projectDirName); @@ -397,22 +336,6 @@ export async function init() { const envExampleContent = fs.readFileSync(envExamplePath, 'utf8'); // Write it to .env.local fs.writeFileSync(envPath, envExampleContent); - - // Generate custody address from seed phrase - if (answers.seedPhrase) { - const account = mnemonicToAccount(answers.seedPhrase); - const custodyAddress = account.address; - - // Look up FID using custody address - if (!fid) { - console.log('\nLooking up FID...'); - fid = await lookupFidByCustodyAddress(custodyAddress, neynarApiKey ?? 'FARCASTER_V2_FRAMES_DEMO'); - } - - // Write seed phrase and FID to .env.local for manifest signature generation - fs.appendFileSync(envPath, `\nSEED_PHRASE="${answers.seedPhrase}"`); - fs.appendFileSync(envPath, `\nFID="${fid}"`); - } // Append all remaining environment variables fs.appendFileSync(envPath, `\nNEXT_PUBLIC_FRAME_NAME="${answers.projectName}"`); diff --git a/package.json b/package.json index 5bc697d..2f90164 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@neynar/create-farcaster-mini-app", - "version": "1.2.10", + "version": "1.2.11", "type": "module", "private": false, "access": "public", diff --git a/src/auth.ts b/src/auth.ts index 65f3c5f..cf3a653 100644 --- a/src/auth.ts +++ b/src/auth.ts @@ -89,6 +89,34 @@ export const authOptions: AuthOptions = { } return session; }, + }, + cookies: { + sessionToken: { + name: `next-auth.session-token`, + options: { + httpOnly: true, + sameSite: "none", + path: "/", + secure: true + } + }, + callbackUrl: { + name: `next-auth.callback-url`, + options: { + sameSite: "none", + path: "/", + secure: true + } + }, + csrfToken: { + name: `next-auth.csrf-token`, + options: { + httpOnly: true, + sameSite: "none", + path: "/", + secure: true + } + } } }