Better Auth Procedure Selection
Select authorization boundaries with Better Auth + TRPC patterns used in template-ts apps.
Procedure Selection Table
| Procedure | Access Level | Context Provided |
|---|---|---|
publicProcedure | No auth | {db, session?, headers} |
protectedProcedure | Authenticated | {db, session, userId, headers} |
adminProcedure | Admin role | {db, session, headers} |
protectedOrganizationMemberProcedure | Org member | {..., member, organizationId} |
protectedOrganizationAdminProcedure | Org admin/owner | {..., member, organizationId} |
protectedProjectMemberProcedure | Project access | {..., project, projectRole, orgRole} |
protectedProjectAdminProcedure | Project admin | {..., project, projectRole, orgRole} |
protectedProjectEditorProcedure | Project editor+ | {..., project, projectRole, orgRole} |
Use this table as the primary selector before writing router logic.
Use This Skill When
- Select the correct protected procedure for organization/project/member/admin access.
- Implement Better Auth authorization checks inside TRPC procedures.
- Review auth boundaries in existing routers.
Follow This Workflow
- Identify required access level from the Procedure Selection Table.
- Start implementation from the matching base procedure.
- Chain stricter middleware only when the table does not fully satisfy the access rule.
- Load
references/better-auth-examples.mdfor detailed examples and copy-ready snippets. - Keep context shape stable; add only route-specific fields.
Key Rules
- Select the narrowest procedure that matches the required permission.
- Reuse inherited context (
userId,organizationId,project, roles) instead of recomputing it. - Grant organization admins automatic project-admin behavior; avoid duplicate checks.
- Pass
ctx.headerstoauth.api.*server calls. - Validate variable origins in every middleware (
opts.ctx,opts.input) before adding business logic.
References
references/better-auth-examples.md— auth configuration, context setup, middleware examples, client auth usage, and admin API patterns.