Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
91 lines
2.3 KiB
TypeScript
91 lines
2.3 KiB
TypeScript
"use client";
|
|
|
|
import { SignedIn, SignedOut } from "@clerk/nextjs";
|
|
import { useEffect, useState } from "react";
|
|
import styles from "../styles/Home.module.css";
|
|
import "../styles/prism.css";
|
|
|
|
declare global {
|
|
interface Window {
|
|
Prism: any;
|
|
}
|
|
}
|
|
|
|
const apiSample = `import { auth } from "@clerk/nextjs";
|
|
import { NextResponse } from "next/server";
|
|
|
|
export async function GET(request: Request) {
|
|
const { userId, sessionId } = auth()
|
|
if(!sessionId) {
|
|
return NextResponse.json({ id: null }, { status: 401 })
|
|
}
|
|
return NextResponse.json({ id: userId }, { status: 200 })
|
|
}`;
|
|
|
|
export const APIRequest = () => {
|
|
useEffect(() => {
|
|
if (window.Prism) {
|
|
window.Prism.highlightAll();
|
|
}
|
|
});
|
|
|
|
const [response, setResponse] = useState("// Click above to run the request");
|
|
|
|
const makeRequest = async () => {
|
|
setResponse("// Loading...");
|
|
|
|
try {
|
|
const res = await fetch("/api/getAuthenticatedUserId");
|
|
const body = await res.json();
|
|
setResponse(JSON.stringify(body, null, " "));
|
|
} catch (e) {
|
|
setResponse(
|
|
"// There was an error with the request. Please contact support@clerk.dev",
|
|
);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<div className={styles.backend}>
|
|
<h2>API request example</h2>
|
|
<div className={styles.card}>
|
|
<button
|
|
rel="noreferrer"
|
|
className={styles.cardContent}
|
|
onClick={() => makeRequest()}
|
|
>
|
|
<img src="/icons/server.svg" />
|
|
<div>
|
|
<h3>fetch('/api/getAuthenticatedUserId')</h3>
|
|
<p>
|
|
Retrieve the user ID of the signed in user, or null if there is no
|
|
user
|
|
</p>
|
|
</div>
|
|
<div className={styles.arrow}>
|
|
<img src="/icons/download.svg" />
|
|
</div>
|
|
</button>
|
|
</div>
|
|
<h4>
|
|
Response
|
|
<em>
|
|
<SignedIn>
|
|
You are signed in, so the request will return your user ID
|
|
</SignedIn>
|
|
<SignedOut>
|
|
You are signed out, so the request will return null
|
|
</SignedOut>
|
|
</em>
|
|
</h4>
|
|
<pre>
|
|
<code className="language-js">{response}</code>
|
|
</pre>
|
|
<h4>app/api/getAuthenticatedUserId/route.ts</h4>
|
|
<pre>
|
|
<code className="language-js">{apiSample}</code>
|
|
</pre>
|
|
</div>
|
|
);
|
|
};
|