Validate Phone and Email when registering user

This commit is contained in:
Joel Thomas
2026-02-24 20:53:30 +05:30
parent b616c6490e
commit 766737dbcc
2 changed files with 49 additions and 9 deletions
@@ -5,6 +5,8 @@ Date: 19-02-2026
#include <stdexcept>
#include <iomanip>
#include <algorithm>
#include <cctype>
#include "FoodDeliveryController.h"
#include "Menu.h"
#include "RestaurantOwnerMenu.h"
@@ -234,6 +236,34 @@ static deliveryAssignments::iterator selectDeliveryAssignmentFromList(deliveryAs
return assignmentIterator;
}
bool isPhoneNumberValid(const std::string& phoneNumber) {
if (phoneNumber.size() != 10)
{
return false;
}
return std::all_of(phoneNumber.begin(), phoneNumber.end(),
[](char character)
{
return std::isdigit(character);
}
);
}
bool isEmailValid(const std::string& email) {
int index = email.find('@');
if (index == std::string::npos) return false;
if (email.find('@', index + 1) != std::string::npos)
{
return false;
}
if (index == 0 || index == email.size() - 1)
{
return false;
}
return true;
}
void FoodDeliveryController::loadStates()
{
FileDatabase<User> userDatabase(USERS_FILE);
@@ -506,8 +536,18 @@ void FoodDeliveryController::registerUser()
util::readString(name);
std::cout << "Enter Phone: ";
util::readString(phone);
if (!isPhoneNumberValid(phone))
{
std::cout << "Phone Number is Invalid. Cannot Register User!\n";
return;
}
std::cout << "Enter Email: ";
util::readString(email);
if (!isEmailValid(email))
{
std::cout << "Email ID is Invalid. Cannot Register User!\n";
return;
}
std::cout << "Enter Address: ";
util::readString(address);
while (true)
@@ -1,9 +1,9 @@
1|alex|Alex Miller|100000001|alex|alex@mail.com|CityOne|RestaurantOwner
2|jordan|Jordan Smith|100000002|jordan|jordan@mail.com|CityTwo|RestaurantOwner
3|taylor|Taylor Brown|100000003|taylor|taylor@mail.com|CityThree|RestaurantOwner
4|emma|Emma Wilson|100000004|emma|emma@mail.com|CityOne|Customer
5|liam|Liam Johnson|100000005|liam|liam@mail.com|CityTwo|Customer
6|olivia|Olivia Davis|100000006|olivia|olivia@mail.com|CityThree|Customer
7|noah|Noah Anderson|100000007|noah|noah@mail.com|CityOne|DeliveryPartner
8|ava|Ava Martinez|100000008|ava|ava@mail.com|CityTwo|DeliveryPartner
9|ethan|Ethan Thomas|100000009|ethan|ethan@mail.com|CityThree|DeliveryPartner
1|alex|Alex Miller|1000000010|alex|alex@mail.com|CityOne|RestaurantOwner
2|jordan|Jordan Smith|1000000020|jordan|jordan@mail.com|CityTwo|RestaurantOwner
3|taylor|Taylor Brown|1000000030|taylor|taylor@mail.com|CityThree|RestaurantOwner
4|emma|Emma Wilson|1000000040|emma|emma@mail.com|CityOne|Customer
5|liam|Liam Johnson|1000000050|liam|liam@mail.com|CityTwo|Customer
6|olivia|Olivia Davis|1000000060|olivia|olivia@mail.com|CityThree|Customer
7|noah|Noah Anderson|1000000070|noah|noah@mail.com|CityOne|DeliveryPartner
8|ava|Ava Martinez|1000000080|ava|ava@mail.com|CityTwo|DeliveryPartner
9|ethan|Ethan Thomas|1000000090|ethan|ethan@mail.com|CityThree|DeliveryPartner