UNPKG

everything-dev

Version:

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

69 lines • 2.75 kB
import { DecoratedMiddleware } from "@orpc/server"; import { z } from "zod"; //#region src/api/auth-middleware.d.ts /** Structural minimum the middlewares read — the generated `AuthPluginContext` satisfies it. */ interface AuthContextShape { user?: { role?: string | null; } | null; userId?: string | null; apiKey?: { permissions?: Record<string, string[]> | null; } | null; organization?: { activeOrganizationId?: string | null; member?: { id?: string | null; role?: string | null; } | null; organization?: { metadata?: Record<string, unknown> | null; status?: 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<string, 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>; }; //#endregion export { AuthContextShape, createAuthMiddleware }; //# sourceMappingURL=auth-middleware.d.cts.map