Spaces:
Sleeping
Sleeping
| import bcrypt | |
| import logging | |
| logger = logging.getLogger(__name__) | |
| def check_login(username: str, password: str, users_collection) -> bool: | |
| """Checks if the provided username and password are valid against MongoDB.""" | |
| logger.info(f"Login attempt for user: {username}") | |
| user = users_collection.find_one({"username": username}) | |
| if user: | |
| stored_hash = user["password"] | |
| # Ensure we always have bytes for bcrypt.checkpw | |
| stored_hash_bytes = stored_hash.encode('utf-8') if isinstance(stored_hash, str) else stored_hash | |
| try: | |
| if bcrypt.checkpw(password.encode('utf-8'), stored_hash_bytes): | |
| logger.info(f"User '{username}' logged in successfully.") | |
| return True | |
| else: | |
| logger.warning(f"Invalid password attempt for user: {username}") | |
| except Exception as e: | |
| logger.error(f"Error checking password for user {username}: {e}") | |
| else: | |
| logger.warning(f"Login failed, user not found: {username}") | |
| return False |