@gftdcojp/gftd-orm
Version:
Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture
111 lines • 3.13 kB
TypeScript
/**
* 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