getAuth()
The getAuth()
helper retrieves the authentication state, allowing you to protect your API routes or gather relevant data. The variables available in the response can be found here .
pages /api /example.ts import { getAuth } from "@clerk/nextjs/server" ;
import type { NextApiRequest , NextApiResponse } from "next" ;
export default async function handler (
req : NextApiRequest ,
res : NextApiResponse
) {
const { userId } = getAuth (req);
// Load any data your application needs for the API route
return res .status ( 200 ) .json ({ userId : userId });
}
It is important to protect your API routes to ensure that only authenticated users can access them. You can do this by checking if the userId
is present in the getAuth()
response.
pages /api /example.ts import { getAuth } from "@clerk/nextjs/server" ;
import type { NextApiRequest , NextApiResponse } from "next" ;
export default async function handler (
req : NextApiRequest ,
res : NextApiResponse
) {
const { userId } = getAuth (req);
if ( ! userId) {
return res .status ( 401 ) .json ({ error : "Not authenticated" });
}
// Load any data your application needs for the API route
return res .status ( 200 ) .json ({ userId : userId });
}
The getToken()
function returns a promise that resolves to the current user's session token. You can also use this function to retrieve a custom JWT template.
pages /api /example.ts import { getAuth } from "@clerk/nextjs/server" ;
import type { NextApiRequest , NextApiResponse } from "next" ;
export default async function handler (
req : NextApiRequest ,
res : NextApiResponse
) {
const { getToken } = getAuth (req);
const token = await getToken ({ template : "supabase" });
// Retrieve the data from your database
return res .status ( 200 ) .json ({});
}
The clerkClient
allows you to access the Clerk API. You can use this to retrieve or update data.
pages /api /example.ts import { clerkClient } from "@clerk/nextjs" ;
import { getAuth } from "@clerk/nextjs/server" ;
import type { NextApiRequest , NextApiResponse } from "next" ;
export default async function handler (
req : NextApiRequest ,
res : NextApiResponse
) {
const { userId } = getAuth (req);
const user = userId ? await clerkClient . users .getUser (userId) : null ;
return res .status ( 200 ) .json ({});
}