ServerAuth & Sessions
Overview
Authentication, session management, and token handling for the CRM platform.
Authentication in Selegic CRM is built on Better Auth and provides three authentication methods:
- Session-based auth — Browser users authenticate via cookies
- API key auth — Machine-to-machine requests using
x-api-keyheader - Extension tokens — Short-lived JWTs for iframe-based extensions
The auth system is provided by @repo/crm-auth and surfaced to the server via middleware.
Core Components
| Component | Location | Purpose |
|---|---|---|
auth | packages/crm-auth/src/index.ts | Better Auth instance with plugins |
sessionMiddleware | crm/server/lib/middleware/session.ts | Resolves session from browser cookies |
tenantMiddleware | crm/server/lib/middleware/tenant.ts | Resolves org from API key or header |
requireAuth | crm/server/lib/middleware/auth.ts | Route guard for protected endpoints |
Quick Navigation
- Architecture — Session lifecycle, token flows, route guards
- Token Handling — API keys, session cookies, extension tokens
- Runbook — Troubleshooting authentication issues
Key Features
Session Management
- Cookie-based sessions with configurable cache (5-minute TTL)
- Automatic organization assignment on session creation
- Cross-subdomain cookies in production
Organization Support
- Multi-tenant isolation via
x-tenant-idheader - API keys can specify target organization
- Session users verified against organization membership
Plugins
The auth instance includes several Better Auth plugins:
organization— Multi-tenant organization supportadmin— Admin role capabilitiesapiKey— API key authenticationoneTap— Google One Tap login