Сначала вам нужно проверить, существуют ли адрес электронной почты и пароль, а затем вам нужно проверить правильность комбинации адреса электронной почты и пароля. в вашем случае вы также можете добавить поле, например мобильный телефон, с адресом электронной почты.
const login = catchAsync(async (Request, Response, next) => {
const { email, password } = Request.body;
//check if email and password exists
if (!email || !password) {
throw new ApiError(httpStatus.UNAUTHORIZED, 'Please provide email and password');
}
//check if user exist and password correct
const user = await User.findOne({ email }).select('+password');
if (!user || !(await user.isPasswordMatch(password, user.password))) {
throw new ApiError(httpStatus.UNAUTHORIZED, 'Incorrect email or password');
}
//if everything ok, send token to the client
const tokens = await tokenService.generateAuthTokens(user.id);
const response = { user: user.transform(), tokens };
res.send(response);
});
PS: не рекомендуется напрямую выдавать ошибку. Используйте другой подход.