From a6af4aa580621163f9cab78dc99a75a27a1c7b20 Mon Sep 17 00:00:00 2001 From: esdrasrenan Date: Mon, 15 Dec 2025 22:40:06 -0300 Subject: [PATCH] fix(profile): corrige persistencia da remocao de avatar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O Better Auth usa cookie cache de 5 minutos para a sessao. Quando o avatar era removido via Prisma, o cache ainda tinha o avatar antigo. Agora usamos auth.api.updateUser para atualizar o usuario e invalidar o cache da sessao. đŸ¤– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/app/api/profile/avatar/route.ts | 36 ++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/app/api/profile/avatar/route.ts b/src/app/api/profile/avatar/route.ts index 07faa20..cdb4d38 100644 --- a/src/app/api/profile/avatar/route.ts +++ b/src/app/api/profile/avatar/route.ts @@ -5,8 +5,10 @@ */ import { NextRequest, NextResponse } from "next/server" +import { headers } from "next/headers" import { getServerSession } from "@/lib/auth-server" +import { auth } from "@/lib/auth" import { prisma } from "@/lib/prisma" import { DEFAULT_TENANT_ID } from "@/lib/constants" import { createConvexClient } from "@/server/convex-client" @@ -73,12 +75,21 @@ export async function POST(request: NextRequest) { return NextResponse.json({ error: "Erro ao obter URL do avatar" }, { status: 500 }) } - // Atualiza o usuĂ¡rio no banco - await prisma.authUser.update({ - where: { id: session.user.id }, - data: { avatarUrl }, + // Usa updateUser do Better Auth para invalidar o cache da sessao + const headerList = await headers() + const updateResult = await auth.api.updateUser({ + headers: headerList, + body: { avatarUrl }, }) + if (!updateResult) { + // Fallback: atualiza diretamente no Prisma + await prisma.authUser.update({ + where: { id: session.user.id }, + data: { avatarUrl }, + }) + } + // Sincroniza com o Convex try { const tenantId = session.user.tenantId ?? DEFAULT_TENANT_ID @@ -109,12 +120,21 @@ export async function DELETE() { return NextResponse.json({ error: "NĂ£o autorizado" }, { status: 401 }) } - // Remove a imagem do usuĂ¡rio (volta ao padrĂ£o) - await prisma.authUser.update({ - where: { id: session.user.id }, - data: { avatarUrl: null }, + // Usa updateUser do Better Auth para invalidar o cache da sessao + const headerList = await headers() + const updateResult = await auth.api.updateUser({ + headers: headerList, + body: { avatarUrl: null }, }) + if (!updateResult) { + // Fallback: atualiza diretamente no Prisma + await prisma.authUser.update({ + where: { id: session.user.id }, + data: { avatarUrl: null }, + }) + } + // Sincroniza com o Convex try { const convex = createConvexClient()