diff --git a/frontend/templates/login.html b/frontend/templates/login.html index cd9ef093..58b35934 100644 --- a/frontend/templates/login.html +++ b/frontend/templates/login.html @@ -42,7 +42,7 @@

Huntarr

Log in to your account

-
+
-
+
@@ -72,85 +73,89 @@

Log in to your account

- + diff --git a/src/primary/routes/common.py b/src/primary/routes/common.py index 62008d2e..f48e58be 100644 --- a/src/primary/routes/common.py +++ b/src/primary/routes/common.py @@ -10,23 +10,17 @@ import qrcode import pyotp import logging -from flask import Blueprint, request, jsonify, render_template, redirect, url_for, make_response, session # Import session -from src.primary import settings_manager # Use the updated settings manager -from src.primary.utils.logger import get_logger # Import get_logger -from src.primary.auth import (create_user, user_exists, verify_user, - generate_2fa_secret, verify_2fa_code, - disable_2fa, is_2fa_enabled, - change_username as auth_change_username, - change_password as auth_change_password, - get_username_from_session, SESSION_COOKIE_NAME, - validate_password_strength, create_session, logout, verify_session, disable_2fa_with_password_and_otp) # Import validate_password_strength, create_session, logout, verify_session, disable_2fa_with_password_and_otp - -# Get logger for common routes -logger = logging.getLogger("common_routes") - -common_bp = Blueprint('common', __name__, - template_folder=os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', 'frontend', 'templates')), - static_folder=os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', 'frontend', 'static'))) +# Add render_template, send_from_directory, session +from flask import Blueprint, request, jsonify, make_response, redirect, url_for, current_app, render_template, send_from_directory, session +from ..auth import ( + verify_user, create_session, get_username_from_session, SESSION_COOKIE_NAME, + change_username as auth_change_username, change_password as auth_change_password, + validate_password_strength, logout, verify_session, disable_2fa_with_password_and_otp, + user_exists, create_user, generate_2fa_secret, verify_2fa_code, is_2fa_enabled # Add missing auth imports +) +from ..utils.logger import logger # Ensure logger is imported + +common_bp = Blueprint('common', __name__) # --- Static File Serving --- # @@ -94,7 +88,6 @@ def login_route(): @common_bp.route('/logout', methods=['POST']) def logout_route(): - logger = get_logger("common_routes") # Get logger try: session_token = request.cookies.get(SESSION_COOKIE_NAME) if session_token: @@ -115,7 +108,7 @@ def logout_route(): @common_bp.route('/setup', methods=['GET', 'POST']) def setup(): - if user_exists(): + if user_exists(): # This function should now be defined via import # If a user already exists, redirect to login or home logger.info("Setup page accessed but user already exists. Redirecting to login.") return redirect(url_for('common.login_route')) @@ -145,7 +138,7 @@ def setup(): return jsonify({"success": False, "error": password_error}), 400 logger.info(f"Attempting to create user '{username}' during setup.") - if create_user(username, password): + if create_user(username, password): # This function should now be defined via import # Automatically log in the user after setup logger.info(f"User '{username}' created successfully during setup. Creating session.") session_token = create_session(username) @@ -167,7 +160,7 @@ def setup(): else: # GET request - show setup page logger.info("Displaying setup page.") - return render_template('setup.html') + return render_template('setup.html') # This function should now be defined via import # --- User Management API Routes --- # @@ -182,7 +175,7 @@ def get_user_info_route(): return jsonify({"error": "Not authenticated"}), 401 # Pass username to is_2fa_enabled - two_fa_status = is_2fa_enabled(username) + two_fa_status = is_2fa_enabled(username) # This function should now be defined via import logger.debug(f"Retrieved user info for '{username}'. 2FA enabled: {two_fa_status}") return jsonify({"username": username, "is_2fa_enabled": two_fa_status}) @@ -263,7 +256,7 @@ def setup_2fa(): try: logger.info(f"Generating 2FA setup for user: {username}") # Add logging # Pass username to generate_2fa_secret - secret, qr_code_data_uri = generate_2fa_secret(username) # Use correct return values + secret, qr_code_data_uri = generate_2fa_secret(username) # This function should now be defined via import # Return secret and QR code data URI return jsonify({"success": True, "secret": secret, "qr_code_url": qr_code_data_uri}) # Match frontend expectation 'qr_code_url' @@ -291,7 +284,7 @@ def verify_2fa(): logger.info(f"Attempting to verify 2FA code for user '{username}'.") # Pass username to verify_2fa_code - if verify_2fa_code(username, otp_code, enable_on_verify=True): + if verify_2fa_code(username, otp_code, enable_on_verify=True): # This function should now be defined via import logger.info(f"Successfully verified and enabled 2FA for user: {username}") # Add logging return jsonify({"success": True}) else: