check exists email or phone

This commit is contained in:
2025-02-25 18:10:57 +08:00
parent ac7d18e14b
commit ea3f830134
+15 -1
View File
@@ -4,6 +4,7 @@ from app import app, db, bcrypt, login_manager
from models import User, Listing, Booking, Image, Document, Amenities from models import User, Listing, Booking, Image, Document, Amenities
from datetime import datetime from datetime import datetime
from utils import generate_password, send_email, save_document from utils import generate_password, send_email, save_document
import re
@login_manager.user_loader @login_manager.user_loader
def load_user(user_id): def load_user(user_id):
@@ -43,15 +44,28 @@ def logout():
def register(): def register():
if request.method == 'POST': if request.method == 'POST':
email = request.form['email'] email = request.form['email']
phone = request.form['phone']
existing_user = User.query.filter((User.email == email) | (User.phone == phone)).first()
if existing_user:
error_message = "User with this email or phone number already exists."
return render_template('register.html', error=error_message)
phone_pattern = re.compile(r'^(\+\d{1,3}|8)?\d{10,15}$')
if not phone_pattern.match(phone):
error_message = "Invalid phone number format."
return render_template('register.html', error=error_message)
password_plain = generate_password() password_plain = generate_password()
password = bcrypt.generate_password_hash(password_plain).decode('utf-8') password = bcrypt.generate_password_hash(password_plain).decode('utf-8')
phone = request.form['phone']
user = User(email=email, password=password, phone=phone) user = User(email=email, password=password, phone=phone)
db.session.add(user) db.session.add(user)
db.session.commit() db.session.commit()
send_email(email, 'Your Account Password', f'Your password is: {password_plain}') send_email(email, 'Your Account Password', f'Your password is: {password_plain}')
login_user(user) login_user(user)
return redirect(url_for('upload_document')) return redirect(url_for('upload_document'))
return render_template('register.html') return render_template('register.html')
@app.route('/upload-document', methods=['GET', 'POST']) @app.route('/upload-document', methods=['GET', 'POST'])