'use server'; import { prisma, Prisma, PrismaClient } from '@repo/db'; import { getServerSession } from '../../api/auth/[...nextauth]/auth'; import bcrypt from 'bcryptjs'; export const unlinkDiscord = async (userId: string) => { const client = new PrismaClient(); await client.discordAccount.deleteMany({ where: { userId, }, }); }; export const updateUser = async (changes: Prisma.UserUpdateInput) => { const session = await getServerSession(); if (!session) return null; const client = new PrismaClient(); await client.user.update({ where: { id: session.user.id, }, data: changes, }); }; export const changePassword = async ( oldPassword: string, newPassword: string ) => { const session = await getServerSession(); if (!session) return { error: 'User not found', }; if (!(await bcrypt.compare(oldPassword, session.user.password))) return { error: 'Old password is incorrect', }; const hashedPassword = await bcrypt.hash(newPassword, 15); await prisma.user.update({ data: { password: hashedPassword, }, where: { id: session.user.id, }, }); return { success: true, }; };