Files
var-monorepo/apps/hub/app/(app)/settings/actions.ts
2025-02-17 10:39:19 +01:00

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