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

This commit is contained in:
XFlow Deploy
2026-09-28 10:28:16 +05:00
parent f58ca9b885
commit b42a085160
+30 -16
View File
@@ -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,