UNPKG

@gftdcojp/gftd-orm

Version:

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

154 lines 3.65 kB
/** * Row Level Security (RLS) システム - ksqlDB用アクセス制御 */ import { UserPayload } from './jwt-auth'; /** * RLSポリシーのタイプ */ export declare enum PolicyType { SELECT = "SELECT", INSERT = "INSERT", UPDATE = "UPDATE", DELETE = "DELETE", ALL = "ALL" } /** * RLSポリシー定義 */ export interface RLSPolicy { id: string; name: string; tableName: string; policyType: PolicyType; roles: string[]; condition: string; description: string; isActive: boolean; createdAt: Date; updatedAt: Date; } /** * RLSマネージャー */ export declare class RLSManager { private static instance; private policies; private tableRLSEnabled; private constructor(); /** * シングルトンインスタンスを取得 */ static getInstance(): RLSManager; /** * デフォルトポリシーを初期化 */ private initializeDefaultPolicies; /** * ポリシーを作成 */ createPolicy(policy: Omit<RLSPolicy, 'createdAt' | 'updatedAt'>): void; /** * ポリシーを更新 */ updatePolicy(id: string, updates: Partial<RLSPolicy>): boolean; /** * ポリシーを削除 */ deletePolicy(id: string): boolean; /** * テーブルのRLSを有効化 */ enableRLS(tableName: string): void; /** * テーブルのRLSを無効化 */ disableRLS(tableName: string): void; /** * テーブルのRLS状態を確認 */ isRLSEnabled(tableName: string): boolean; /** * クエリを分析 */ private analyzeQuery; /** * 適用可能なポリシーを取得 */ private getApplicablePolicies; /** * 条件をクエリに適用 */ private applyConditionsToQuery; /** * ユーザーコンテキストを条件に適用 */ private applyUserContext; /** * クエリにRLSを適用 */ applyRLS(sql: string, user: UserPayload): string; /** * ポリシー一覧を取得 */ listPolicies(): RLSPolicy[]; /** * テーブル固有のポリシーを取得 */ getTablePolicies(tableName: string): RLSPolicy[]; /** * ポリシーを取得 */ getPolicy(id: string): RLSPolicy | undefined; /** * RLS統計情報を取得 */ getStatistics(): { totalPolicies: number; activePolicies: number; enabledTables: number; policiesByType: Record<string, number>; }; } /** * Express.js ミドルウェア: RLS適用 */ export declare function rlsMiddleware(): (req: any, res: any, next: any) => void; /** * RLSヘルパー関数 */ export declare const rls: { /** * マネージャーインスタンスを取得 */ manager: () => RLSManager; /** * ポリシーを作成 */ createPolicy: (policy: Omit<RLSPolicy, "createdAt" | "updatedAt">) => void; /** * テーブルのRLSを有効化 */ enableTableRLS: (tableName: string) => void; /** * テーブルのRLSを無効化 */ disableTableRLS: (tableName: string) => void; /** * クエリにRLSを適用 */ applyToQuery: (sql: string, user: UserPayload) => string; /** * ポリシー一覧を取得 */ listPolicies: () => RLSPolicy[]; /** * 統計情報を取得 */ getStatistics: () => { totalPolicies: number; activePolicies: number; enabledTables: number; policiesByType: Record<string, number>; }; }; //# sourceMappingURL=row-level-security.d.ts.map