UNPKG

@wristband/nextjs-auth

Version:

SDK for integrating your Next.js application with Wristband. Handles user authentication, session management, and token management.

34 lines (33 loc) 1.87 kB
import type { NextRequest } from 'next/server'; import { NextResponse } from 'next/server'; import { SessionData, SessionOptions } from '@wristband/typescript-session'; import { ConfigResolver } from '../../config-resolver'; import { CallbackResult, LoginConfig, LogoutConfig, NextJsCookieStore, ServerActionAuthResult } from '../../types'; import { WristbandService } from '../../wristband-service'; export declare class AppRouterAuthHandler { private configResolver; private wristbandService; constructor(configResolver: ConfigResolver, wristbandService: WristbandService); login(request: NextRequest, loginConfig?: LoginConfig): Promise<NextResponse>; callback(request: NextRequest): Promise<CallbackResult>; logout(request: NextRequest, logoutConfig?: LogoutConfig): Promise<NextResponse>; createCallbackResponse(request: NextRequest, redirectUrl: string): Promise<NextResponse>; /** * Validates authentication for Server Actions by checking session validity and refreshing tokens if needed. * * This method: * - Retrieves the session from cookies * - Checks if the user is authenticated * - Automatically refreshes expired access tokens * - Saves updated tokens back to cookies * * Note: CSRF validation is not performed as Next.js Server Actions have built-in * CSRF protection via Origin/Host header comparison. * * @template T - Session data type extending SessionData * @param cookieStore - Next.js cookie store from await cookies() * @param sessionOptions - Session configuration options * @returns Promise resolving to authentication result with session data or failure reason */ createServerActionAuth<T extends SessionData = SessionData>(cookieStore: NextJsCookieStore, sessionOptions: SessionOptions): Promise<ServerActionAuthResult<T>>; }