resetPassword.js 1022 Bytes
import { prisma } from "../../../utils";
import bcrypt from "bcryptjs";

export default {
  Mutation: {
    resetPassword: async (_, args) => {
      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;
      }
    },
  },
};