From 96fcf773f22c653377238fd4d07294ad7e1e4266 Mon Sep 17 00:00:00 2001 From: Alexyz Date: Mon, 28 Sep 2026 10:39:20 +0500 Subject: [PATCH] fix(auth): add resilient local fallback for Google auth when PostgreSQL is offline --- apps/web/server/api/auth/google.post.ts | 46 ++++++++++++++++--------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/apps/web/server/api/auth/google.post.ts b/apps/web/server/api/auth/google.post.ts index a1522fe..f1acf61 100644 --- a/apps/web/server/api/auth/google.post.ts +++ b/apps/web/server/api/auth/google.post.ts @@ -47,29 +47,43 @@ export default defineEventHandler(async (event) => { const username = email.split('@')[0].toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-_]/g, '') const userId = fbUser.localId - const user = await prisma.user.upsert({ - where: { email }, - update: { - username - // Мы не затираем профиль при каждом входе, но нам нужно его получить - }, - create: { + let user: any + try { + user = await prisma.user.upsert({ + where: { email }, + update: { + username + }, + create: { + id: userId, + email, + username, + password: 'firebase-managed', + role: 'user', + profile: { + create: { + displayName: fbUser.displayName || username, + avatar: fbUser.photoUrl || `https://api.dicebear.com/7.x/avataaars/svg?seed=${userId}` + } + } + }, + include: { + profile: true + } + }) + } catch (dbErr: any) { + console.warn('[Auth] Database offline, creating local dev session for:', email, dbErr.message) + user = { id: userId, email, username, - password: 'firebase-managed', role: 'user', profile: { - create: { - displayName: fbUser.displayName || username, - avatar: fbUser.photoUrl || `https://api.dicebear.com/7.x/avataaars/svg?seed=${userId}` - } + displayName: fbUser.displayName || username, + avatar: fbUser.photoUrl || `https://api.dicebear.com/7.x/avataaars/svg?seed=${userId}` } - }, - include: { - profile: true } - }) + } const token = generateToken({ id: user.id,