Spaces:
Runtime error
Runtime error
Download utils/blueprints/auth.py from Darshankumarr03/Swift-Query: direct link, hf CLI and curl.
- Browser
- Download file 5 kB
-
https://huggingface.co/spaces/Darshankumarr03/Swift-Query/resolve/main/utils/blueprints/auth.py
- Command line
-
hf download hf://spaces/Darshankumarr03/Swift-Query/utils/blueprints/auth.py
-
curl -L -o auth.py https://huggingface.co/spaces/Darshankumarr03/Swift-Query/resolve/main/utils/blueprints/auth.py
5 kB
| from flask import Blueprint, render_template, request, flash, redirect, url_for, session | |
| from utils.db.db import mongo | |
| from utils.logging.logger_setup import logger | |
| import bcrypt | |
| auth_bp = Blueprint('auth', __name__) | |
| def patient_login(): | |
| """ | |
| Handle patient login requests. | |
| Verifies credentials against the MongoDB patient collection. | |
| Supports both legacy plain-text and hashed passwords for migration compatibility. | |
| """ | |
| if request.method == "POST": | |
| name = request.form.get("name", "").strip() | |
| password = request.form.get("password", "").strip() | |
| try: | |
| # Check name or email | |
| patient = mongo.db.patient.find_one({"$or": [{"name": name}, {"email": name}]}) | |
| if patient: | |
| # Verify password | |
| stored_password = patient.get('password') | |
| is_valid = False | |
| try: | |
| if stored_password: | |
| is_valid = bcrypt.checkpw(password.encode('utf-8'), stored_password.encode('utf-8')) | |
| except ValueError: | |
| # Fallback for legacy plain text passwords during migration | |
| is_valid = (stored_password == password) | |
| except Exception as e: | |
| logger.error(f"Error during password verification for patient {name}: {e}") | |
| is_valid = False | |
| if is_valid: | |
| session['logged_in'] = True | |
| session['user_type'] = 'patient' | |
| session['user_id'] = patient.get('sql_id', patient.get('id')) | |
| logger.info({"action": "patient_login", "status": "success", "patient_id": session['user_id']}) | |
| flash("Patient login successful!") | |
| return redirect(url_for("patient.patient_dashboard")) | |
| else: | |
| logger.warning({"action": "patient_login", "status": "failure", "name": name, "reason": "invalid_password"}) | |
| flash("Invalid credentials. Please try again.") | |
| else: | |
| logger.warning({"action": "patient_login", "status": "failure", "name": name, "reason": "user_not_found"}) | |
| flash("Invalid credentials. Please try again.") | |
| except Exception as e: | |
| logger.error(f"Database error during patient login for {name}: {e}") | |
| flash("A system error occurred. Please try again later.") | |
| return render_template('patient/patient_login.html') | |
| def doctor_login(): | |
| """ | |
| Handle doctor login requests. | |
| Verifies credentials against the MongoDB doctor collection. | |
| """ | |
| if request.method == "POST": | |
| name = request.form.get("name") | |
| password = request.form.get("password") | |
| try: | |
| doctor = mongo.db.doctor.find_one({"$or": [{"name": name}, {"email": name}]}) | |
| if doctor: | |
| stored_password = doctor.get('password') | |
| is_valid = False | |
| try: | |
| if stored_password: | |
| is_valid = bcrypt.checkpw(password.encode('utf-8'), stored_password.encode('utf-8')) | |
| except ValueError: | |
| is_valid = (stored_password == password) | |
| except Exception as e: | |
| logger.error(f"Error during password verification for doctor {name}: {e}") | |
| is_valid = False | |
| if is_valid: | |
| session['logged_in'] = True | |
| session['user_type'] = 'doctor' | |
| session['user_id'] = doctor.get('sql_id', doctor.get('id')) | |
| session['user_name'] = doctor.get('name') | |
| logger.info({"action": "doctor_login", "status": "success"}) | |
| flash("Doctor login successful!") | |
| return redirect(url_for("doctor.doctor_dashboard")) | |
| else: | |
| logger.warning({"action": "doctor_login", "status": "failure", "name": name, "reason": "invalid_password"}) | |
| flash("Invalid credentials. Please try again.") | |
| else: | |
| logger.warning({"action": "doctor_login", "status": "failure", "name": name, "reason": "user_not_found"}) | |
| flash("Invalid credentials. Please try again.") | |
| except Exception as e: | |
| logger.error(f"Database error during doctor login for {name}: {e}") | |
| flash("A system error occurred. Please try again later.") | |
| return render_template('doctor/doctor_login.html') | |
| def admin_login_redirect(): | |
| return redirect(url_for("admin.login")) | |
| def logout(): | |
| session.clear() | |
| flash("You have been successfully logged out.") | |
| return redirect(url_for('index')) | |