Overview
Concordia uses Better Auth for authentication. All endpoints are automatically generated and handled through/api/auth/[...all].
Base Endpoint
Authentication Configuration
From/src/lib/auth/auth.ts:53-133:
Registration
Sign Up
Validation Rules
From/src/lib/auth/auth.ts:57-64:
- Email: Required, valid email format
- Password:
- Minimum 10 characters
- At least 1 uppercase letter
- At least 1 lowercase letter
- At least 1 digit
- At least 1 special character
- Username: Optional, alphanumeric with hyphens/underscores
- Name: Optional
Post-Signup Actions
From/src/lib/auth/auth.ts:196-266, after successful signup:
- Profile created with derived username
- Wallet initialized (balance: 0.00 EUR)
- Default role assigned (
citizen) - Audit log entry created
- Verification email sent (if SMTP configured)
Response
Email Verification
Send Verification Email
Verify Email
Users receive a verification link via email:Login
Sign In with Email/Password
Rate Limiting
From/src/lib/auth/auth.ts:372-389:
- Max attempts: 5 failed logins per email
- Window: 15 minutes
- Error:
"Too many login attempts"(HTTP 429)
Response
Audit Logging
From/src/lib/auth/auth.ts:290-306, successful logins are logged:
login_failed).
Session Management
Get Current Session
Response
Session Configuration
From/src/lib/auth/auth.ts:93-103:
number
default:"604800"
Session lifetime (7 days in seconds)
number
default:"86400"
Session refresh interval (1 day)
number
default:"300"
Cookie cache duration (5 minutes)
number
default:"600"
Fresh session window (10 minutes)
number
default:"604800"
Maximum session lifetime (7 days)
Logout
Sign Out
/src/lib/auth/auth.ts:338-346, Bearer tokens are invalidated on logout:
Password Reset
Request Password Reset
Email Sent
From/src/lib/auth/auth.ts:65-76, users receive an email with reset link:
Reset Password
Organization Authentication
Set Active Organization
/src/lib/auth/auth.ts:319, this is mapped to:
List User Organizations
Response
Security Features
IP Tracking
From/src/lib/auth/auth.ts:16-23, IPs are extracted from:
Secure Cookies
From/src/lib/auth/auth.ts:179-183:
CSRF Protection
- CSRF checks enabled by default
- Trusted origins configured via
BETTER_AUTH_URL
Error Responses
Common Errors
Example
Related Resources
API Overview
Rate limiting and authentication basics
Better Auth Docs
Official Better Auth documentation