import bcrypt from pymongo import MongoClient import re import os uri = f"mongodb+srv://{os.getenv('mongo_secret')}@void-uep.guig8vk.mongodb.net/?retryWrites=true&w=majority" client = MongoClient(uri) db = client["ImagiGen"] users_collection = db["users"] def hash_password(password: str) -> str: # Generate a salt and hash the password salt = bcrypt.gensalt() hashed_password = bcrypt.hashpw(password.encode(), salt) return hashed_password.decode() def verify_password(entered_password: str, stored_hashed_password: str) -> bool: # Check if the entered password matches the stored hashed password return bcrypt.checkpw(entered_password.encode(), stored_hashed_password.encode()) def validate_email(email): # Define a regex pattern for validating an email email_pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$' # Use re.match() to check if the email matches the pattern if re.match(email_pattern, email): return True return False def register(email_id, password): if not validate_email(email_id): return "Invalid Email Id" # Check if username already exists if users_collection.find_one({"email": email_id}): return "Email ID already Registered" # Insert new user into the collection password = hash_password(password) users_collection.insert_one({"email": email_id, "password": password}) return "Registration successful" def login(email_id, password): # Check if username and password match user = users_collection.find_one({"email": email_id}) if user : hash_password = user["password"] verify = verify_password(entered_password= password, stored_hashed_password = hash_password) if verify: return "Login successful" else : return "Invalid credentials" else: return "Invalid credentials"