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