diff --git a/.github/pr-labeler.yml b/.github/pr-labeler.yml index a25f7b87..ce0832dd 100644 --- a/.github/pr-labeler.yml +++ b/.github/pr-labeler.yml @@ -13,10 +13,10 @@ fauna: ["packages/adapter-fauna/**/*"] firebase: ["packages/adapter-firebase/**/*"] hasura: ["packages/adapter-hasura/**/*"] frameworks: ["packages/frameworks-*/**/*"] -legacy: ["packages/next-auth/**/*"] mikro-orm: ["packages/adapter-mikro-orm/**/*"] mongodb: ["packages/adapter-mongodb/**/*"] neo4j: ["packages/adapter-neo4j/**/*"] +next-auth: ["packages/next-auth/**/*"] pg: ["packages/adapter-pg/**/*"] playgrounds: ["apps/playgrounds/**/*"] pouchdb: ["packages/adapter-pouchdb/**/*"] diff --git a/.gitignore b/.gitignore index a6fd7155..5800a764 100644 --- a/.gitignore +++ b/.gitignore @@ -30,13 +30,6 @@ dist .cache-loader packages/next-auth/providers packages/next-auth/src/providers/oauth-types.ts -packages/next-auth/client -packages/next-auth/css -packages/next-auth/utils -packages/next-auth/core -packages/next-auth/jwt -packages/next-auth/react -packages/next-auth/next packages/*/*.js packages/*/*.d.ts packages/*/*.d.ts.map @@ -90,7 +83,13 @@ packages/core/providers packages/core/src/lib/pages/styles.ts docs/docs/reference/core docs/docs/reference/sveltekit +docs/docs/reference/nextjs +# Next.js +packages/next-auth/lib +packages/next-auth/providers +# copied from @auth/core +packages/next-auth/src/providers # SvelteKit packages/frameworks-sveltekit/index.* diff --git a/.prettierignore b/.prettierignore index fa687a93..ffd87297 100644 --- a/.prettierignore +++ b/.prettierignore @@ -31,6 +31,7 @@ coverage dist packages/**/*.cjs packages/**/*.js +!packages/*/scripts/*.js # @auth/core packages/core/src/providers/oauth-types.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 4e6785bc..dd5a0507 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,7 @@ { "files.exclude": { "packages/core/{lib,providers,*.js,*.d.ts,*.d.ts.map}": true, - "packages/next-auth/{client,core,css,jwt,next,providers,react,utils,*.js,*.d.ts}": true }, "typescript.tsdk": "node_modules/typescript/lib", "openInGitHub.remote.branch": "main" -} +} \ No newline at end of file diff --git a/apps/dev/nextjs/app/api/protected/route.ts b/apps/dev/nextjs/app/api/protected/route.ts new file mode 100644 index 00000000..6f512019 --- /dev/null +++ b/apps/dev/nextjs/app/api/protected/route.ts @@ -0,0 +1,7 @@ +import { auth } from "auth" +import { NextResponse } from "next/server" + +export const GET = auth(function GET(req) { + if (req.auth) return NextResponse.json(req.auth) + return NextResponse.json({ message: "Not authenticated" }, { status: 401 }) +}) diff --git a/apps/dev/nextjs/app/auth/[...nextauth]/route.ts b/apps/dev/nextjs/app/auth/[...nextauth]/route.ts new file mode 100644 index 00000000..0f99f6b1 --- /dev/null +++ b/apps/dev/nextjs/app/auth/[...nextauth]/route.ts @@ -0,0 +1,15 @@ +import { handlers } from "auth" +const { GET: AuthGET, POST } = handlers +export { POST } + +import type { NextRequest } from "next/server" + +// Showcasing advanced initialization in Route Handlers +export async function GET(request: NextRequest) { + // Do something with request + const response = await AuthGET(request) + // Do something with response + return response +} + +// export const runtime = "edge" diff --git a/apps/dev/nextjs/app/client.tsx b/apps/dev/nextjs/app/client.tsx new file mode 100644 index 00000000..39c5a41b --- /dev/null +++ b/apps/dev/nextjs/app/client.tsx @@ -0,0 +1,16 @@ +"use client" + +import { signIn, useSession } from "next-auth/react" + +export default function Client() { + const { data: session, update, status } = useSession() + return ( +
+
+        {status === "loading" ? "Loading..." : JSON.stringify(session, null, 2)}
+      
+ + +
+ ) +} diff --git a/apps/dev/nextjs/app/dashboard/page.tsx b/apps/dev/nextjs/app/dashboard/page.tsx new file mode 100644 index 00000000..6f2075d7 --- /dev/null +++ b/apps/dev/nextjs/app/dashboard/page.tsx @@ -0,0 +1,3 @@ +export default function Page() { + return

This page is protected.

+} diff --git a/apps/dev/nextjs/app/layout.tsx b/apps/dev/nextjs/app/layout.tsx index 7f2b6717..26fb9b8c 100644 --- a/apps/dev/nextjs/app/layout.tsx +++ b/apps/dev/nextjs/app/layout.tsx @@ -1,12 +1,56 @@ -export default function RootLayout({ - children, -}: { - children: React.ReactNode -}) { +import { auth, signIn, signOut, update } from "auth" +import Footer from "components/footer" +import { Header } from "components/header" +import styles from "components/header.module.css" +import "./styles.css" + +export default function RootLayout(props: { children: React.ReactNode }) { return ( - - {children} + + +
{props.children}
+
+
{ + "use server" + update({ user: { name: "New Name" } }) + }} + > + +
+
+