Introduced logging for user operations Added database rollback on user creation failure Enhanced exception handling and error reporting
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
from models.User.user import User, db
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class UserService:
|
|
def create_user(self, username, password):
|
|
if not username or not password:
|
|
raise ValueError("Username and password are required")
|
|
|
|
if len(username) < 3 or len(password) < 8:
|
|
raise ValueError(
|
|
"Username must be at least 3 characters and password must be at least 8 characters."
|
|
)
|
|
|
|
existing_user = User.query.filter_by(username=username).first()
|
|
if existing_user:
|
|
raise ValueError("User already exists")
|
|
|
|
new_user = User(username=username, password=password)
|
|
db.session.add(new_user)
|
|
try:
|
|
db.session.commit()
|
|
except Exception as e:
|
|
db.session.rollback()
|
|
logger.error(f"Error creating user: {e}")
|
|
raise ValueError("Could not create user") from e
|
|
return new_user
|
|
|
|
def verify_user(self, username, password):
|
|
user = User.query.filter_by(username=username).first()
|
|
if not user:
|
|
logger.warning(f"User not found: {username}")
|
|
raise ValueError("Invalid username or password")
|
|
|
|
if not user.check_password(password):
|
|
logger.warning(f"Invalid password for user: {username}")
|
|
raise ValueError("Invalid username or password")
|
|
|
|
logger.info(f"User verified: {username}")
|
|
return user
|