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