mirror of
https://github.com/harivansh-afk/Saas-Teamspace.git
synced 2026-04-15 04:03:31 +00:00
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
'use server'
|
|
|
|
import { db } from '@/lib/db'
|
|
import { getUserByEmail } from '@/data/user'
|
|
import { getVerificationTokenByToken } from '@/data/verification-token'
|
|
|
|
export const newVerification = async (token: string) => {
|
|
try {
|
|
const existingToken = await getVerificationTokenByToken(token)
|
|
|
|
if (!existingToken) {
|
|
return { error: 'Verification link is invalid!' }
|
|
}
|
|
|
|
const hasExpired = new Date(existingToken.expires) < new Date()
|
|
if (hasExpired) {
|
|
return { error: 'Verification link has expired! Please request a new one.' }
|
|
}
|
|
|
|
const existingUser = await getUserByEmail(existingToken.email)
|
|
if (!existingUser) {
|
|
return { error: 'Email not found! Please sign up first.' }
|
|
}
|
|
|
|
// If already verified, just return success
|
|
if (existingUser.emailVerified) {
|
|
return { success: 'Email already verified! Please login.' }
|
|
}
|
|
|
|
// Update user verification status
|
|
await db.user.update({
|
|
where: { id: existingUser.id },
|
|
data: {
|
|
emailVerified: new Date(),
|
|
email: existingToken.email
|
|
}
|
|
})
|
|
|
|
// Delete the verification token
|
|
await db.verificationToken.delete({
|
|
where: { id: existingToken.id }
|
|
})
|
|
|
|
return { success: 'Email verified successfully! You can now login.' }
|
|
} catch (error) {
|
|
return { error: 'Something went wrong! Please try again.' }
|
|
}
|
|
}
|