Files
var-monorepo/apps/hub/app/(app)/settings/actions.ts

57 lines
1.1 KiB
TypeScript

"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, 12);
await prisma.user.update({
data: {
password: hashedPassword,
},
where: {
id: session.user.id,
},
});
return {
success: true,
};
};