feat: enrich VK OAuth with firstName/lastName/gender/avatar
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user