from flask import Blueprint, request, jsonify import secrets import string from util.logger import logger from auth.token import verify_token passwordgen_blueprint = Blueprint('passwordgen_tool', __name__) @passwordgen_blueprint.route('/api/password/generate', methods=['POST']) def generate_password(): user = verify_token() if not user: return jsonify({"message": "Nicht autorisiert"}), 401 try: data = request.get_json(silent=True) or {} length = min(max(int(data.get("length", 16)), 8), 64) use_uppercase = data.get("uppercase", True) use_lowercase = data.get("lowercase", True) use_numbers = data.get("numbers", True) use_symbols = data.get("symbols", False) charset = "" if use_uppercase: charset += string.ascii_uppercase if use_lowercase: charset += string.ascii_lowercase if use_numbers: charset += string.digits if use_symbols: charset += string.punctuation if not charset: return jsonify({"message": "Mindestens ein Zeichensatz muss ausgewählt sein"}), 400 password = ''.join(secrets.choice(charset) for _ in range(length)) logger.info(f"Passwort generiert von {user['username']}") return jsonify({"password": password}) except Exception as e: logger.error(f"Fehler Passwortgenerator: {e}") return jsonify({"message": "Fehler beim Generieren"}), 500