diff --git a/packages/lib/next-auth/auth-options.ts b/packages/lib/next-auth/auth-options.ts index 3b9492807..50240174c 100644 --- a/packages/lib/next-auth/auth-options.ts +++ b/packages/lib/next-auth/auth-options.ts @@ -9,6 +9,7 @@ import type { GoogleProfile } from 'next-auth/providers/google'; import GoogleProvider from 'next-auth/providers/google'; import { prisma } from '@documenso/prisma'; +import { IdentityProvider } from '@documenso/prisma/client'; import { isTwoFactorAuthenticationEnabled } from '../server-only/2fa/is-2fa-availble'; import { validateTwoFactorAuthentication } from '../server-only/2fa/validate-2fa'; @@ -93,7 +94,7 @@ export const NEXT_AUTH_OPTIONS: AuthOptions = { }), ], callbacks: { - async jwt({ token, user }) { + async jwt({ token, user, trigger, account }) { const merged = { ...token, ...user, @@ -138,6 +139,22 @@ export const NEXT_AUTH_OPTIONS: AuthOptions = { merged.emailVerified = user.emailVerified?.toISOString() ?? null; } + if ((trigger === 'signIn' || trigger === 'signUp') && account?.provider === 'google') { + merged.emailVerified = user?.emailVerified + ? new Date(user.emailVerified).toISOString() + : new Date().toISOString(); + + await prisma.user.update({ + where: { + id: Number(merged.id), + }, + data: { + emailVerified: merged.emailVerified, + identityProvider: IdentityProvider.GOOGLE, + }, + }); + } + return { id: merged.id, name: merged.name,