UNPKG

better-auth

Version:

The most comprehensive authentication framework for TypeScript.

386 lines (385 loc) • 14.9 kB
import { AccessControl, Statements } from "../access/types.mjs"; import "../access/index.mjs"; import "../index.mjs"; import { OrganizationOptions } from "./types.mjs"; import { InferInvitation, InferMember, InferOrganization, InferTeam, OrganizationSchema, Team, TeamMember } from "./schema.mjs"; import { ORGANIZATION_ERROR_CODES } from "./error-codes.mjs"; import { createOrgRole, deleteOrgRole, getOrgRole, listOrgRoles, updateOrgRole } from "./routes/crud-access-control.mjs"; import { acceptInvitation, cancelInvitation, createInvitation, getInvitation, listInvitations, listUserInvitations, rejectInvitation } from "./routes/crud-invites.mjs"; import { addMember, getActiveMember, getActiveMemberRole, leaveOrganization, listMembers, removeMember, updateMemberRole } from "./routes/crud-members.mjs"; import { checkOrganizationSlug, createOrganization, deleteOrganization, getFullOrganization, listOrganizations, setActiveOrganization, updateOrganization } from "./routes/crud-org.mjs"; import { addTeamMember, createTeam, listOrganizationTeams, listTeamMembers, listUserTeams, removeTeam, removeTeamMember, setActiveTeam, updateTeam } from "./routes/crud-team.mjs"; import * as _better_auth_core_db9 from "@better-auth/core/db"; import * as z from "zod"; import * as better_call242 from "better-call"; //#region src/plugins/organization/organization.d.ts declare function parseRoles(roles: string | string[]): string; type DynamicAccessControlEndpoints<O extends OrganizationOptions> = { createOrgRole: ReturnType<typeof createOrgRole<O>>; deleteOrgRole: ReturnType<typeof deleteOrgRole<O>>; listOrgRoles: ReturnType<typeof listOrgRoles<O>>; getOrgRole: ReturnType<typeof getOrgRole<O>>; updateOrgRole: ReturnType<typeof updateOrgRole<O>>; }; type TeamEndpoints<O extends OrganizationOptions> = { createTeam: ReturnType<typeof createTeam<O>>; listOrganizationTeams: ReturnType<typeof listOrganizationTeams<O>>; removeTeam: ReturnType<typeof removeTeam<O>>; updateTeam: ReturnType<typeof updateTeam<O>>; setActiveTeam: ReturnType<typeof setActiveTeam<O>>; listUserTeams: ReturnType<typeof listUserTeams<O>>; listTeamMembers: ReturnType<typeof listTeamMembers<O>>; addTeamMember: ReturnType<typeof addTeamMember<O>>; removeTeamMember: ReturnType<typeof removeTeamMember<O>>; }; type OrganizationEndpoints<O extends OrganizationOptions> = { createOrganization: ReturnType<typeof createOrganization<O>>; updateOrganization: ReturnType<typeof updateOrganization<O>>; deleteOrganization: ReturnType<typeof deleteOrganization<O>>; setActiveOrganization: ReturnType<typeof setActiveOrganization<O>>; getFullOrganization: ReturnType<typeof getFullOrganization<O>>; listOrganizations: ReturnType<typeof listOrganizations<O>>; createInvitation: ReturnType<typeof createInvitation<O>>; cancelInvitation: ReturnType<typeof cancelInvitation<O>>; acceptInvitation: ReturnType<typeof acceptInvitation<O>>; getInvitation: ReturnType<typeof getInvitation<O>>; rejectInvitation: ReturnType<typeof rejectInvitation<O>>; listInvitations: ReturnType<typeof listInvitations<O>>; getActiveMember: ReturnType<typeof getActiveMember<O>>; checkOrganizationSlug: ReturnType<typeof checkOrganizationSlug<O>>; addMember: ReturnType<typeof addMember<O>>; removeMember: ReturnType<typeof removeMember<O>>; updateMemberRole: ReturnType<typeof updateMemberRole<O>>; leaveOrganization: ReturnType<typeof leaveOrganization<O>>; listUserInvitations: ReturnType<typeof listUserInvitations<O>>; listMembers: ReturnType<typeof listMembers<O>>; getActiveMemberRole: ReturnType<typeof getActiveMemberRole<O>>; hasPermission: ReturnType<typeof createHasPermission<O>>; }; declare const createHasPermission: <O extends OrganizationOptions>(options: O) => better_call242.StrictEndpoint<"/organization/has-permission", { method: "POST"; requireHeaders: true; body: z.ZodIntersection<z.ZodObject<{ organizationId: z.ZodOptional<z.ZodString>; }, z.core.$strip>, z.ZodUnion<readonly [z.ZodObject<{ permission: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>; permissions: z.ZodUndefined; }, z.core.$strip>, z.ZodObject<{ permission: z.ZodUndefined; permissions: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>; }, z.core.$strip>]>>; use: ((inputContext: better_call242.MiddlewareInputContext<{ use: ((inputContext: better_call242.MiddlewareInputContext<better_call242.MiddlewareOptions>) => Promise<{ session: { session: Record<string, any> & { id: string; createdAt: Date; updatedAt: Date; userId: string; expiresAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user: Record<string, any> & { id: string; createdAt: Date; updatedAt: Date; email: string; emailVerified: boolean; name: string; image?: string | null | undefined; }; }; }>)[]; }>) => Promise<{ session: { session: _better_auth_core_db9.Session & { activeTeamId?: string | undefined; activeOrganizationId?: string | undefined; }; user: _better_auth_core_db9.User; }; }>)[]; metadata: { $Infer: { body: ({ /** * @deprecated Use `permissions` instead */ permission: { [key in keyof (O["ac"] extends AccessControl<infer S extends Statements> ? S : { readonly organization: readonly ["update", "delete"]; readonly member: readonly ["create", "update", "delete"]; readonly invitation: readonly ["create", "cancel"]; readonly team: readonly ["create", "update", "delete"]; readonly ac: readonly ["create", "read", "update", "delete"]; })]?: ((O["ac"] extends AccessControl<infer S extends Statements> ? S : { readonly organization: readonly ["update", "delete"]; readonly member: readonly ["create", "update", "delete"]; readonly invitation: readonly ["create", "cancel"]; readonly team: readonly ["create", "update", "delete"]; readonly ac: readonly ["create", "read", "update", "delete"]; })[key] extends readonly unknown[] ? (O["ac"] extends AccessControl<infer S extends Statements> ? S : { readonly organization: readonly ["update", "delete"]; readonly member: readonly ["create", "update", "delete"]; readonly invitation: readonly ["create", "cancel"]; readonly team: readonly ["create", "update", "delete"]; readonly ac: readonly ["create", "read", "update", "delete"]; })[key][number] : never)[] | undefined }; permissions?: never | undefined; } | { permissions: { [key in keyof (O["ac"] extends AccessControl<infer S extends Statements> ? S : { readonly organization: readonly ["update", "delete"]; readonly member: readonly ["create", "update", "delete"]; readonly invitation: readonly ["create", "cancel"]; readonly team: readonly ["create", "update", "delete"]; readonly ac: readonly ["create", "read", "update", "delete"]; })]?: ((O["ac"] extends AccessControl<infer S extends Statements> ? S : { readonly organization: readonly ["update", "delete"]; readonly member: readonly ["create", "update", "delete"]; readonly invitation: readonly ["create", "cancel"]; readonly team: readonly ["create", "update", "delete"]; readonly ac: readonly ["create", "read", "update", "delete"]; })[key] extends readonly unknown[] ? (O["ac"] extends AccessControl<infer S extends Statements> ? S : { readonly organization: readonly ["update", "delete"]; readonly member: readonly ["create", "update", "delete"]; readonly invitation: readonly ["create", "cancel"]; readonly team: readonly ["create", "update", "delete"]; readonly ac: readonly ["create", "read", "update", "delete"]; })[key][number] : never)[] | undefined }; permission?: never | undefined; }) & { organizationId?: string | undefined; }; }; openapi: { description: string; requestBody: { content: { "application/json": { schema: { type: "object"; properties: { permission: { type: string; description: string; deprecated: boolean; }; permissions: { type: string; description: string; }; }; required: string[]; }; }; }; }; responses: { "200": { description: string; content: { "application/json": { schema: { type: "object"; properties: { error: { type: string; }; success: { type: string; }; }; required: string[]; }; }; }; }; }; }; }; }, { error: null; success: boolean; }>; type OrganizationPlugin<O extends OrganizationOptions> = { id: "organization"; endpoints: OrganizationEndpoints<O> & (O extends { teams: { enabled: true; }; } ? TeamEndpoints<O> : {}) & (O extends { dynamicAccessControl: { enabled: true; }; } ? DynamicAccessControlEndpoints<O> : {}); schema: OrganizationSchema<O>; $Infer: { Organization: InferOrganization<O>; Invitation: InferInvitation<O>; Member: InferMember<O>; Team: O["teams"] extends { enabled: true; } ? Team : any; TeamMember: O["teams"] extends { enabled: true; } ? TeamMember : any; ActiveOrganization: O["teams"] extends { enabled: true; } ? { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; teams: InferTeam<O, false>[]; } & InferOrganization<O, false> : { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; } & InferOrganization<O, false>; }; $ERROR_CODES: typeof ORGANIZATION_ERROR_CODES; options: NoInfer<O>; }; /** * Organization plugin for Better Auth. Organization allows you to create teams, members, * and manage access control for your users. * * @example * ```ts * const auth = betterAuth({ * plugins: [ * organization({ * allowUserToCreateOrganization: true, * }), * ], * }); * ``` */ declare function organization<O extends OrganizationOptions & { teams: { enabled: true; }; }>(options?: O | undefined): { id: "organization"; endpoints: OrganizationEndpoints<O> & TeamEndpoints<O>; schema: OrganizationSchema<O>; $Infer: { Organization: InferOrganization<O>; Invitation: InferInvitation<O>; Member: InferMember<O>; Team: O["teams"] extends { enabled: true; } ? Team : unknown; TeamMember: O["teams"] extends { enabled: true; } ? TeamMember : unknown; ActiveOrganization: O["teams"] extends { enabled: true; } ? { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; teams: InferTeam<O, false>[]; } & InferOrganization<O, false> : { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; } & InferOrganization<O, false>; }; $ERROR_CODES: typeof ORGANIZATION_ERROR_CODES; options: NoInfer<O>; }; declare function organization<O extends OrganizationOptions & { teams: { enabled: true; }; dynamicAccessControl: { enabled: true; }; }>(options?: O | undefined): { id: "organization"; endpoints: OrganizationEndpoints<O> & TeamEndpoints<O> & DynamicAccessControlEndpoints<O>; schema: OrganizationSchema<O>; $Infer: { Organization: InferOrganization<O>; Invitation: InferInvitation<O>; Member: InferMember<O>; Team: O["teams"] extends { enabled: true; } ? Team : any; TeamMember: O["teams"] extends { enabled: true; } ? TeamMember : any; ActiveOrganization: O["teams"] extends { enabled: true; } ? { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; teams: InferTeam<O, false>[]; } & InferOrganization<O, false> : { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; } & InferOrganization<O, false>; }; $ERROR_CODES: typeof ORGANIZATION_ERROR_CODES; options: NoInfer<O>; }; declare function organization<O extends OrganizationOptions & { dynamicAccessControl: { enabled: true; }; }>(options?: O | undefined): { id: "organization"; endpoints: OrganizationEndpoints<O> & DynamicAccessControlEndpoints<O>; schema: OrganizationSchema<O>; $Infer: { Organization: InferOrganization<O>; Invitation: InferInvitation<O>; Member: InferMember<O>; Team: O["teams"] extends { enabled: true; } ? Team : any; TeamMember: O["teams"] extends { enabled: true; } ? TeamMember : any; ActiveOrganization: O["teams"] extends { enabled: true; } ? { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; teams: InferTeam<O, false>[]; } & InferOrganization<O, false> : { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; } & InferOrganization<O, false>; }; $ERROR_CODES: typeof ORGANIZATION_ERROR_CODES; options: NoInfer<O>; }; declare function organization<O extends OrganizationOptions>(options?: O | undefined): { id: "organization"; endpoints: OrganizationEndpoints<O>; schema: OrganizationSchema<O>; $Infer: { Organization: InferOrganization<O>; Invitation: InferInvitation<O>; Member: InferMember<O>; Team: O["teams"] extends { enabled: true; } ? Team : any; TeamMember: O["teams"] extends { enabled: true; } ? TeamMember : any; ActiveOrganization: O["teams"] extends { enabled: true; } ? { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; teams: InferTeam<O, false>[]; } & InferOrganization<O, false> : { members: InferMember<O, false>[]; invitations: InferInvitation<O, false>[]; } & InferOrganization<O, false>; }; $ERROR_CODES: typeof ORGANIZATION_ERROR_CODES; options: NoInfer<O>; }; //#endregion export { DynamicAccessControlEndpoints, OrganizationEndpoints, OrganizationPlugin, TeamEndpoints, organization, parseRoles }; //# sourceMappingURL=organization.d.mts.map