@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
TypeScript
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>>;
}