UNPKG

create-auth-js-boiler

Version:
65 lines (53 loc) 1.63 kB
"use server"; import bcrypt from "bcryptjs"; import { auth } from "@/auth"; // Import the new `auth()` function import { prisma } from "@/lib/prisma"; import { SettingsSchemaType } from "@/schemas/settings.schema"; export const settings = async (values: SettingsSchemaType) => { const { user } = await auth(); // Use the new `auth()` function to get the current user if (!user) { return { error: "Unauthorized" }; } const dbUser = await prisma.user.findUnique({ where: { id: user.id }, }); if (!dbUser) { return { error: "Unauthorized" }; } if (user.isOAuth) { values.email = undefined; values.password = undefined; values.newPassword = undefined; values.isTwoFactorEnabled = undefined; } if (values.password && values.newPassword && dbUser.password) { const passwordsMatch = await bcrypt.compare( values.password, dbUser.password, ); if (!passwordsMatch) { return { error: "Incorrect password!" }; } const hashedPassword = await bcrypt.hash(values.newPassword, 10); values.password = hashedPassword; values.newPassword = undefined; } const updatedUser = await prisma.user.update({ where: { id: dbUser.id }, data: { ...values, }, }); // Custom session update logic using `auth()` const session = await auth(); if (session && session.user) { session.user = { ...session.user, name: updatedUser.name, email: updatedUser.email, isTwoFactorEnabled: updatedUser.isTwoFactorEnabled, role: updatedUser.role, }; } return { success: "Settings Updated!" }; };