Files
var-monorepo/apps/hub/app/(app)/settings/actions.ts
2025-05-24 13:07:55 -07:00

51 lines
1.0 KiB
TypeScript

"use server";
import { prisma, Prisma } from "@repo/db";
import { getServerSession } from "../../api/auth/[...nextauth]/auth";
import bcrypt from "bcryptjs";
export const unlinkDiscord = async (userId: string) => {
await prisma.discordAccount.deleteMany({
where: {
userId,
},
});
};
export const updateUser = async (changes: Prisma.UserUpdateInput) => {
const session = await getServerSession();
if (!session) return null;
await prisma.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, 12);
await prisma.user.update({
data: {
password: hashedPassword,
},
where: {
id: session.user.id,
},
});
return {
success: true,
};
};