init
This commit is contained in:
37
pages/api/verify.ts
Normal file
37
pages/api/verify.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import type { NextApiRequest, NextApiResponse } from "next";
|
||||
|
||||
import { PrivyClient, AuthTokenClaims } from "@privy-io/server-auth";
|
||||
|
||||
const PRIVY_APP_ID = process.env.NEXT_PUBLIC_PRIVY_APP_ID;
|
||||
const PRIVY_APP_SECRET = process.env.PRIVY_APP_SECRET;
|
||||
const client = new PrivyClient(PRIVY_APP_ID!, PRIVY_APP_SECRET!);
|
||||
|
||||
export type AuthenticateSuccessResponse = {
|
||||
claims: AuthTokenClaims;
|
||||
};
|
||||
|
||||
export type AuthenticationErrorResponse = {
|
||||
error: string;
|
||||
};
|
||||
|
||||
async function handler(
|
||||
req: NextApiRequest,
|
||||
res: NextApiResponse<
|
||||
AuthenticateSuccessResponse | AuthenticationErrorResponse
|
||||
>,
|
||||
) {
|
||||
const headerAuthToken = req.headers.authorization?.replace(/^Bearer /, "");
|
||||
const cookieAuthToken = req.cookies["privy-token"];
|
||||
|
||||
const authToken = cookieAuthToken || headerAuthToken;
|
||||
if (!authToken) return res.status(401).json({ error: "Missing auth token" });
|
||||
|
||||
try {
|
||||
const claims = await client.verifyAuthToken(authToken);
|
||||
return res.status(200).json({ claims });
|
||||
} catch (e: any) {
|
||||
return res.status(401).json({ error: e.message });
|
||||
}
|
||||
}
|
||||
|
||||
export default handler;
|
||||
Reference in New Issue
Block a user