NeynarAuthNutton

This commit is contained in:
Shreyaschorge
2025-07-04 03:17:49 +05:30
parent 56517dc41a
commit 1fe4d30134
7 changed files with 861 additions and 71 deletions

View File

@@ -0,0 +1,10 @@
import { NextResponse } from 'next/server';
import { getNeynarClient } from '~/lib/neynar';
export async function GET() {
const client = getNeynarClient();
const response = await client.fetchNonce();
return NextResponse.json(response);
}

View File

@@ -0,0 +1,39 @@
import { NextResponse } from 'next/server';
import { getNeynarClient } from '~/lib/neynar';
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const message = searchParams.get('message');
const signature = searchParams.get('signature');
if (!message) {
return NextResponse.json(
{ error: 'Message parameter is required' },
{ status: 400 }
);
}
if (!signature) {
return NextResponse.json(
{ error: 'Signature parameter is required' },
{ status: 400 }
);
}
const client = getNeynarClient();
let signers;
try {
const data = await client.fetchSigners({ message, signature });
signers = data.signers;
} catch (error) {
console.error('Error fetching signers:', error?.response?.data);
throw new Error('Failed to fetch signers');
}
console.log('signers =>', signers);
return NextResponse.json({
signers,
});
}

View File

@@ -1,27 +1,38 @@
"use client";
'use client';
import dynamic from "next/dynamic";
import type { Session } from "next-auth";
import { SessionProvider } from "next-auth/react";
import { MiniAppProvider } from "@neynar/react";
import { SafeFarcasterSolanaProvider } from "~/components/providers/SafeFarcasterSolanaProvider";
import { ANALYTICS_ENABLED } from "~/lib/constants";
import dynamic from 'next/dynamic';
import type { Session } from 'next-auth';
import { SessionProvider } from 'next-auth/react';
import { MiniAppProvider } from '@neynar/react';
import { SafeFarcasterSolanaProvider } from '~/components/providers/SafeFarcasterSolanaProvider';
import { ANALYTICS_ENABLED } from '~/lib/constants';
import { AuthKitProvider } from '@farcaster/auth-kit';
const WagmiProvider = dynamic(
() => import("~/components/providers/WagmiProvider"),
() => import('~/components/providers/WagmiProvider'),
{
ssr: false,
}
);
export function Providers({ session, children }: { session: Session | null, children: React.ReactNode }) {
const solanaEndpoint = process.env.SOLANA_RPC_ENDPOINT || "https://solana-rpc.publicnode.com";
export function Providers({
session,
children,
}: {
session: Session | null;
children: React.ReactNode;
}) {
const solanaEndpoint =
process.env.SOLANA_RPC_ENDPOINT || 'https://solana-rpc.publicnode.com';
return (
<SessionProvider session={session}>
<WagmiProvider>
<MiniAppProvider analyticsEnabled={ANALYTICS_ENABLED} backButtonEnabled={true}>
<MiniAppProvider
analyticsEnabled={ANALYTICS_ENABLED}
backButtonEnabled={true}
>
<SafeFarcasterSolanaProvider endpoint={solanaEndpoint}>
{children}
<AuthKitProvider config={{}}>{children}</AuthKitProvider>
</SafeFarcasterSolanaProvider>
</MiniAppProvider>
</WagmiProvider>