diff --git a/server/src/routes/oauth-social.js b/server/src/routes/oauth-social.js index 2f85a59..82dfb57 100644 --- a/server/src/routes/oauth-social.js +++ b/server/src/routes/oauth-social.js @@ -118,12 +118,14 @@ export async function registerOAuthSocialRoutes(fastify) { let firstName = null let lastName = null + let gender = null + let avatar = null try { if (accessTokenVk && vkUserId) { const u = new URL('https://api.vk.com/method/users.get') u.searchParams.set('access_token', accessTokenVk) u.searchParams.set('users_ids', String(vkUserId)) - u.searchParams.set('fields', 'photo_50') + u.searchParams.set('fields', 'photo_200,sex') u.searchParams.set('v', '5.199') const profRes = await fetch(u.toString()) const prof = await profRes.json() @@ -131,6 +133,9 @@ export async function registerOAuthSocialRoutes(fastify) { if (u0) { firstName = u0.first_name ?? null lastName = u0.last_name ?? null + avatar = u0.photo_200 ?? null + if (u0.sex === 1) gender = 'female' + else if (u0.sex === 2) gender = 'male' } } } catch { @@ -144,11 +149,15 @@ export async function registerOAuthSocialRoutes(fastify) { suggestedEmail: emailSuggestion, }) - if (firstName || lastName) { - const name = [firstName, lastName].filter(Boolean).join(' ').trim() - if (name && !user.name) { - await prisma.user.update({ where: { id: user.id }, data: { name } }) - } + const displayName = [firstName, lastName].filter(Boolean).join(' ').trim() + const updateData = {} + if (displayName && !user.displayName) updateData.displayName = displayName + if (firstName) updateData.firstName = firstName + if (lastName) updateData.lastName = lastName + if (gender) updateData.gender = gender + if (avatar) updateData.avatar = avatar + if (Object.keys(updateData).length > 0) { + await prisma.user.update({ where: { id: user.id }, data: updateData }) } const token = await issueUserJwt(fastify, user.id, user.email)