@wristband/nextjs-auth
Version:
SDK for integrating your Next.js application with Wristband. Handles user authentication, session management, and token management.
71 lines (70 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPagesRouterSession = getPagesRouterSession;
const typescript_session_1 = require("@wristband/typescript-session");
/**
* Get session from Node.js request/response objects.
*
* **For Pages Router route handlers and getServerSideProps() only.**
* Returns a full session with all methods available (save, destroy, etc.)
*
* For middleware/proxy or App Router route handlers, use getSessionFromRequest().
* For Server Components (read-only), use getReadOnlySessionFromCookies().
* For Server Actions (mutable), use getMutableSessionFromCookies().
*
* @template T - Session data type extending SessionData
* @param req - Node.js IncomingMessage from Pages Router
* @param res - Node.js ServerResponse from Pages Router
* @param options - Session configuration options
* @returns Promise resolving to a full session instance with all methods
*
* @example
* ```typescript
* // In API route (pages/api/profile.ts)
* import { NextApiRequest, NextApiResponse } from 'next';
* import { getPagesRouterSession } from '@wristband/nextjs-auth';
*
* const sessionOptions = {
* secrets: process.env.SESSION_SECRET!,
* cookieName: 'my-session'
* };
*
* export default async function handler(req: NextApiRequest, res: NextApiResponse) {
* const session = await getPagesRouterSession(req, res, sessionOptions);
*
* if (!session.isAuthenticated) {
* return res.status(401).json({ error: 'Unauthorized' });
* }
*
* return res.json({ userId: session.userId });
* }
*
* // In getServerSideProps
* import { GetServerSideProps } from 'next';
* import { getPagesRouterSession } from '@wristband/nextjs-auth';
*
* const sessionOptions = {
* secrets: process.env.SESSION_SECRET!,
* cookieName: 'my-session'
* };
*
* export const getServerSideProps: GetServerSideProps = async ({ req, res }) => {
* const session = await getPagesRouterSession(req, res, sessionOptions);
*
* if (!session.isAuthenticated) {
* return {
* redirect: { destination: '/login', permanent: false },
* };
* }
*
* return { props: { userId: session.userId } };
* };
* ```
*
* @see {@link getSessionFromRequest} For middleware/proxy and App Router route handlers
* @see {@link getReadOnlySessionFromCookies} For Server Components (read-only)
* @see {@link getMutableSessionFromCookies} For Server Actions (mutable)
*/
function getPagesRouterSession(req, res, options) {
return (0, typescript_session_1.getSession)(req, res, options);
}