import { prisma } from '@documenso/prisma';

import { AppError } from '../../errors/app-error';

export interface GetUserByResetTokenOptions {
  token: string;
}

export const getUserByResetToken = async ({ token }: GetUserByResetTokenOptions) => {
  const result = await prisma.passwordResetToken.findFirst({
    where: {
      token,
    },
    include: {
      user: true,
    },
  });

  if (!result || !result.user) {
    throw new AppError('INVALID_TOKEN', {
      message: 'Invalid password reset token',
      statusCode: 400,
    });
  }

  return result.user;
};
