resetPassword.js 1.2 KB
import { prisma, isAuthenticated } from "../../../utils";
import bcrypt from "bcryptjs";

export default {
  Mutation: {
    resetPassword: async (_, args) => {
      if (isAuthenticated) {
        const { secret, email, passwordOne, passwordTwo } = args;
        const user = await prisma.user.findOne({
          where: {
            email,
          },
        });
        const encryptSecret = await bcrypt.hash(user.emailSecret, 10);
        if (encryptSecret !== secret) {
          throw new Error(
            "not vaild secret value!, input another value or resend email"
          );
        } else {
          if (passwordOne !== passwordTwo) {
            // For check new password is right, the two things must be same.
            throw new Error(
              "the two password don't match each other, try again"
            );
          } else {
            await prisma.user.update({
              where: {
                email,
              },
              data: {
                emailSecret: "",
                password: passwordOne,
              },
            });
          }
          return user;
        }
      } else {
        throw new Error("You need to login first");
      }
    },
  },
};