UNPKG

@gftdcojp/gftd-orm

Version:

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

124 lines 3.37 kB
/** * JWT認証システム - Supabase風のJWT認証実装 */ /** * ユーザーペイロード */ export interface UserPayload { sub: string; email?: string; role: 'anon' | 'authenticated' | 'service_role'; tenant_id?: string; metadata?: Record<string, any>; app_metadata?: Record<string, any>; user_metadata?: Record<string, any>; } /** * JWT認証結果 */ export interface AuthResult { accessToken: string; refreshToken: string; user: UserPayload; expiresAt: number; expiresIn: number; } /** * JWT認証管理クラス */ export declare class JwtAuthManager { private static instance; private config; private refreshTokenStore; private constructor(); /** * シングルトンインスタンスを取得 */ static getInstance(): JwtAuthManager; /** * アクセストークンを生成 */ generateAccessToken(user: UserPayload): string; /** * リフレッシュトークンを生成 */ generateRefreshToken(userId: string): string; /** * 認証トークンのペアを生成 */ generateAuthTokens(user: UserPayload): AuthResult; /** * アクセストークンを検証 */ verifyAccessToken(token: string): UserPayload | null; /** * リフレッシュトークンを検証 */ verifyRefreshToken(refreshToken: string): string | null; /** * リフレッシュトークンを使用してアクセストークンを更新 */ refreshAccessToken(refreshToken: string, currentUser: UserPayload): AuthResult | null; /** * 匿名ユーザーのトークンを生成 */ generateAnonymousToken(tenantId?: string): AuthResult; /** * サービスロールトークンを生成 */ generateServiceRoleToken(tenantId?: string): AuthResult; /** * トークンを無効化 */ revokeToken(refreshToken: string): void; /** * 期限切れのリフレッシュトークンをクリーンアップ */ cleanupExpiredTokens(): void; /** * 有効期限の文字列をミリ秒に変換 */ private parseExpiration; } /** * Express.js ミドルウェア: JWT認証 */ export declare function jwtAuthMiddleware(options?: { requireAuth?: boolean; allowAnonymous?: boolean; requiredRole?: 'anon' | 'authenticated' | 'service_role'; }): (req: any, res: any, next: any) => any; /** * JWT認証のヘルパー関数 */ export declare const jwtAuth: { /** * 認証マネージャーのインスタンスを取得 */ manager: () => JwtAuthManager; /** * ユーザーを認証してトークンを発行 */ authenticate: (user: UserPayload) => AuthResult; /** * 匿名認証トークンを発行 */ authenticateAnonymous: (tenantId?: string) => AuthResult; /** * サービスロール認証トークンを発行 */ authenticateServiceRole: (tenantId?: string) => AuthResult; /** * トークンを検証 */ verify: (token: string) => UserPayload; /** * トークンをリフレッシュ */ refresh: (refreshToken: string, currentUser: UserPayload) => AuthResult; /** * トークンを無効化 */ revoke: (refreshToken: string) => void; }; //# sourceMappingURL=jwt-auth.d.ts.map