UNPKG

@gftdcojp/gftd-orm

Version:

Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture

111 lines 3.13 kB
/** * Next.js Auth0 React Hooks & Protection Middleware * * nextjs-auth0互換のHooksとミドルウェア: * - useUser() - ユーザー情報取得フック * - UserProvider - Reactコンテキストプロバイダー * - withApiAuthRequired() - API保護ミドルウェア * - withPageAuthRequired() - ページ保護ミドルウェア */ import React, { ReactNode } from 'react'; import { UserPayload } from '@gftdcojp/gftd-auth'; /** * User Context 型定義 */ interface UserContextType { user: UserPayload | null; error?: Error; isLoading: boolean; checkSession: () => Promise<void>; } /** * UserProvider Props */ interface UserProviderProps { children: ReactNode; user?: UserPayload | null; profileUrl?: string; loginUrl?: string; } /** * 🎣 UserProvider - Reactコンテキストプロバイダー */ export declare function UserProvider({ children, user: initialUser, profileUrl, loginUrl }: UserProviderProps): React.JSX.Element; /** * 🎣 useUser Hook - ユーザー情報取得 */ export declare function useUser(): UserContextType; /** * 🛡️ Server-side Protection Middleware */ /** * API Route保護用のwrapper */ export declare function withApiAuthRequired<T extends any[]>(handler: (...args: T) => Promise<Response> | Response): (...args: T) => Promise<Response>; /** * Page Component保護用のwrapper */ export declare function withPageAuthRequired<P extends Record<string, any>>(Component: React.ComponentType<P>, options?: { returnTo?: string; loginUrl?: string; }): { (props: P): React.JSX.Element; displayName: string; }; /** * 🎯 Higher-Order Components (HOCs) */ /** * 認証が必要なレイアウトコンポーネント */ export declare function AuthenticatedLayout({ children, fallback }: { children: ReactNode; fallback?: ReactNode; }): string | number | bigint | true | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element; /** * 🎛️ Utility Hooks */ /** * Access Token取得フック */ export declare function useAccessToken(): { accessToken: string | null; isLoading: boolean; error: Error | null; refetch: () => Promise<void>; }; /** * ログアウト機能フック */ export declare function useLogout(): (returnTo?: string) => void; /** * 📖 使用例 */ export declare const nextjsAuth0HooksExamples: { /** * App Component での UserProvider 設定例 */ appComponent: string; /** * Client Component での useUser 使用例 */ clientComponent: string; /** * Protected Page の実装例 */ protectedPage: string; /** * Protected API Route の実装例 */ protectedApi: string; /** * Layout with Authentication の実装例 */ authenticatedLayout: string; /** * Access Token使用例 */ accessTokenUsage: string; }; export {}; //# sourceMappingURL=nextjs-auth0-hooks.d.ts.map