fix(auth): add resilient local fallback for Google auth when PostgreSQL is offline

This commit is contained in:
2026-09-28 10:39:20 +05:00
parent 94da4dd1cf
commit 96fcf773f2
+16 -2
View File
@@ -47,11 +47,12 @@ export default defineEventHandler(async (event) => {
const username = email.split('@')[0].toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-_]/g, '') const username = email.split('@')[0].toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-_]/g, '')
const userId = fbUser.localId const userId = fbUser.localId
const user = await prisma.user.upsert({ let user: any
try {
user = await prisma.user.upsert({
where: { email }, where: { email },
update: { update: {
username username
// Мы не затираем профиль при каждом входе, но нам нужно его получить
}, },
create: { create: {
id: userId, id: userId,
@@ -70,6 +71,19 @@ export default defineEventHandler(async (event) => {
profile: true profile: true
} }
}) })
} catch (dbErr: any) {
console.warn('[Auth] Database offline, creating local dev session for:', email, dbErr.message)
user = {
id: userId,
email,
username,
role: 'user',
profile: {
displayName: fbUser.displayName || username,
avatar: fbUser.photoUrl || `https://api.dicebear.com/7.x/avataaars/svg?seed=${userId}`
}
}
}
const token = generateToken({ const token = generateToken({
id: user.id, id: user.id,