UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

79 lines • 3.15 kB
import { z } from "zod"; import { DecoratedMiddleware } from "@orpc/server"; //#region src/api/auth-middleware.d.ts /** Structural minimum the middlewares read — the generated `AuthPluginContext` satisfies it. */ interface AuthContextShape { user?: { id?: string; role?: string | null; } | null; userId?: string | null; apiKey?: { permissions?: Record<string, string[]> | null; } | null; permissions?: Record<string, string[]> | null; organization?: { activeOrganizationId?: string | null; member?: { id?: string | null; role?: string | null; } | null; organization?: { metadata?: Record<string, unknown> | null; status?: string; } | null; teams?: Array<{ id: string; permissions?: Record<string, string[]>; }> | null; } | null; } type OrgMetaType<TSchema extends z.ZodType | undefined> = TSchema extends z.ZodType ? z.infer<TSchema> : Record<string, unknown>; declare function createAuthMiddleware<TContext extends AuthContextShape = AuthContextShape, TOrgMetaSchema extends z.ZodType | undefined = undefined>(builder: any, options?: { orgMetaSchema?: TOrgMetaSchema; }): { requireAuth: DecoratedMiddleware<TContext, { userId: string; user: NonNullable<TContext["user"]>; }, any, any, any>; requireAuthOrApiKey: DecoratedMiddleware<TContext, Record<never, never>, any, any, any>; requireRole: <TRoles extends readonly string[]>(...roles: TRoles) => DecoratedMiddleware<TContext, { userId: string; user: NonNullable<TContext["user"]>; }, any, any, any>; requireAdmin: DecoratedMiddleware<TContext, { userId: string; user: NonNullable<TContext["user"]>; }, any, any, any>; requireOrganization: DecoratedMiddleware<TContext, { userId: string; user: NonNullable<TContext["user"]>; organization: NonNullable<TContext["organization"]> & { activeOrganizationId: string; organization: (NonNullable<NonNullable<TContext["organization"]>["organization"]> & { metadata: OrgMetaType<TOrgMetaSchema> | null; }) | null; }; }, any, any, any>; requireOrgRole: <TRoles extends readonly string[]>(...roles: TRoles) => DecoratedMiddleware<TContext, { userId: string; user: NonNullable<TContext["user"]>; organization: NonNullable<TContext["organization"]> & { activeOrganizationId: string; member: NonNullable<NonNullable<TContext["organization"]>["member"]>; organization: (NonNullable<NonNullable<TContext["organization"]>["organization"]> & { metadata: OrgMetaType<TOrgMetaSchema> | null; }) | null; }; }, any, any, any>; requireApiKey: (requiredPermissions?: Record<string, string[]>) => DecoratedMiddleware<TContext, { apiKey: NonNullable<TContext["apiKey"]>; }, any, any, any>; requirePermission: (resource: string, action: string, scope?: { scope?: "organization" | "team"; teamId?: (input: any) => string | undefined; }) => DecoratedMiddleware<TContext, Record<never, never>, any, any, any>; }; //#endregion export { AuthContextShape, createAuthMiddleware }; //# sourceMappingURL=auth-middleware.d.mts.map