@permitio/permit-prisma
Version:
Prisma extension for integrating Permit.io authorization (RBAC, ABAC, ReBAC) into your Prisma application.
39 lines (38 loc) • 1.97 kB
TypeScript
import { IPermitClient } from "../types/IPermitClient";
import { IPermitConfig } from "../types/IPermitConfig";
import { User, Action, Resource, Context } from "../models/PermissionModels";
import { Permit } from "permitio";
export declare class PermitClient implements IPermitClient {
private permitInstance;
private config;
private initialized;
private initializationPromise;
constructor(config: IPermitConfig);
/**
* Initialize the Permit SDK connection
* This is called automatically when the client is constructed
*/
private initialize;
/**
* Ensure the SDK is initialized before performing operations
*/
private ensureInitialized;
/**
* Check if a user has permission to perform an action on a resource
*/
check(user: User, action: Action, resource: Resource, context?: Context): Promise<boolean>;
/**
* Enforce permission check - throws if permission is denied
*/
enforceCheck(user: User, action: Action, resource: Resource, context?: Context): Promise<void>;
getUserPermissions(userId: string): Promise<import("permitio/build/main/enforcement/interfaces").IUserPermissions>;
getAllowedResourceIds(userId: User, resourceType: string, action: Action): Promise<string[]>;
filterObjects(user: User, action: Action, resources: Array<any>): Promise<Array<any>>;
syncResourceInstanceCreate(resourceType: string, resourceKey: string, tenant?: string, attributes?: Record<string, any>): Promise<import("permitio/build/main/openapi").ResourceInstanceRead>;
syncResourceInstanceUpdate(resourceType: string, resourceKey: string, tenant?: string, attributes?: Record<string, any>): Promise<import("permitio/build/main/openapi").ResourceInstanceRead>;
syncResourceInstanceDelete(resourceType: string, resourceKey: string): Promise<void>;
/**
* Get the underlying Permit SDK instance for advanced usage
*/
getPermitInstance(): Permit;
}