feat: complete tRPC integration and fix platform UI issues

- Implement comprehensive tRPC setup with type-safe API
- Create tRPC routers for dashboard, admin, and auth endpoints
- Migrate frontend components to use tRPC client
- Fix platform dashboard Settings button functionality
- Add platform settings page with profile and security management
- Create OpenAI API mocking infrastructure for cost-safe testing
- Update tests to work with new tRPC architecture
- Sync database schema to fix AIBatchRequest table errors
This commit is contained in:
2025-07-11 15:37:53 +02:00
committed by Kaj Kowalski
parent f2a3d87636
commit fa7e815a3b
38 changed files with 4285 additions and 518 deletions

View File

@ -15,9 +15,12 @@ const loginRateLimiter = new InMemoryRateLimiter({
*/
export function authRateLimitMiddleware(request: NextRequest) {
const { pathname } = request.nextUrl;
// Only apply to NextAuth signin endpoint
if (pathname.startsWith("/api/auth/signin") || pathname.startsWith("/api/auth/callback/credentials")) {
if (
pathname.startsWith("/api/auth/signin") ||
pathname.startsWith("/api/auth/callback/credentials")
) {
const ip = extractClientIP(request);
const rateLimitResult = loginRateLimiter.checkRateLimit(ip);
@ -27,10 +30,12 @@ export function authRateLimitMiddleware(request: NextRequest) {
success: false,
error: "Too many login attempts. Please try again later.",
},
{
{
status: 429,
headers: {
"Retry-After": String(Math.ceil((rateLimitResult.resetTime! - Date.now()) / 1000)),
"Retry-After": String(
Math.ceil((rateLimitResult.resetTime! - Date.now()) / 1000)
),
},
}
);
@ -38,4 +43,4 @@ export function authRateLimitMiddleware(request: NextRequest) {
}
return NextResponse.next();
}
}