quamble / signup.py
raj-tomar001's picture
Update signup.py
b465f99 verified
from flask import request, jsonify
from models import get_user_by_email, add_user, bcrypt
import re
import logging
import traceback
import os
logging.basicConfig(
filename=os.path.join('/tmp', 'app.log'),
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s'
)
def signup_route():
if request.method == 'POST':
username = request.form.get('username')
email = request.form.get('email')
password = request.form.get('password')
confirm_password = request.form.get('confirm_password')
role = request.form.get('role')
if not username or not email or not password or not confirm_password or not role:
print('Empty field in signup attempt: %s', {'username': username, 'email': email})
logging.warning('Empty field in signup attempt: %s', {'username': username, 'email': email})
return jsonify({'message': 'Please fill out all fields', 'status': 'danger'}), 400
if not re.match(r'^[^@]+@[^@]+\.[^@]+$', email):
print('Invalid email format: %s', email)
logging.warning('Invalid email format: %s', email)
return jsonify({'message': 'Invalid email address! Please ensure it contains "@" and ".".', 'status': 'danger'}), 400
if password != confirm_password:
print('Password mismatch for user: %s', username)
logging.warning('Password mismatch for user: %s', username)
return jsonify({'message': 'Passwords do not match', 'status': 'danger'}), 400
if role.lower() == 'player':
preference_1 = request.form.get('preference_1')
preference_2 = request.form.get('preference_2')
preference_3 = request.form.get('preference_3')
preference_4 = request.form.get('preference_4')
if not all([preference_1, preference_2, preference_3, preference_4]):
print('Missing preferences for player role: %s', email)
logging.warning('Missing preferences for player role: %s', email)
return jsonify({'message': 'Please provide all four preferences', 'status': 'danger'}), 400
user = get_user_by_email(email)
if user:
print('Email already exists: %s', email)
logging.warning('Email already exists: %s', email)
return jsonify({'message': 'Email already exists', 'status': 'danger'}), 400
try:
add_user(username, email, password, role, preference_1, preference_2, preference_3, preference_4)
print('User created successfully: %s', email)
logging.info('User created successfully: %s', email)
return jsonify({'message': 'Account created successfully', 'status': 'success'}), 201
except Exception as db_error:
print('Error adding user to database: %s', traceback.format_exc())
logging.error('Error adding user to database: %s', traceback.format_exc())
return jsonify({'message': 'Internal server error while adding user.', 'status': 'danger'}), 500
print('Method not allowed: %s', request.method)
logging.error('Method not allowed: %s', request.method)
return jsonify({'message': 'Method not allowed', 'status': 'danger'}), 405