UNPKG

bknd

Version:

Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.

40 lines (39 loc) 1.62 kB
import { Permission } from "../../core"; import type { Context } from "hono"; import type { ServerEnv } from "../../modules/Controller"; import { Role } from "./Role"; export type GuardUserContext = { role?: string | null; [key: string]: any; }; export type GuardConfig = { enabled?: boolean; }; export type GuardContext = Context<ServerEnv> | GuardUserContext; export declare class Guard { permissions: Permission[]; roles?: Role[]; config?: GuardConfig; constructor(permissions?: Permission[], roles?: Role[], config?: GuardConfig); static create(permissionNames: string[], roles?: Record<string, { permissions?: string[]; is_default?: boolean; implicit_allow?: boolean; }>, config?: GuardConfig): Guard; getPermissionNames(): string[]; getPermissions(): Permission[]; permissionExists(permissionName: string): boolean; setRoles(roles: Role[]): this; getRoles(): Role[] | undefined; setConfig(config: Partial<GuardConfig>): this; registerPermission(permission: Permission): this; registerPermissions(permissions: Record<string, Permission>): any; registerPermissions(permissions: Permission[]): any; getUserRole(user?: GuardUserContext): Role | undefined; getDefaultRole(): Role | undefined; isEnabled(): boolean; hasPermission(permission: Permission, user?: GuardUserContext): boolean; hasPermission(name: string, user?: GuardUserContext): boolean; granted(permission: Permission | string, c?: GuardContext): boolean; throwUnlessGranted(permission: Permission | string, c: GuardContext): void; }