cahnges to the user management
This commit is contained in:
+60
-12
@@ -26,6 +26,8 @@ from bson.objectid import ObjectId
|
||||
import user as user_store
|
||||
import buchungen
|
||||
import server_steering as steering
|
||||
from modules.emailservice.email import send_register_token
|
||||
import secrets
|
||||
|
||||
app = Flask(__name__)
|
||||
app.secret_key = "ASDfhbsdfseiufhgildsrfrjg874368546987s6e8468f4!?FAUS/&s"
|
||||
@@ -1881,15 +1883,9 @@ def login():
|
||||
|
||||
if stored_user:
|
||||
if stored_user.get("verified", True) is False:
|
||||
if request.is_json:
|
||||
return jsonify({
|
||||
"error": "Account not verified",
|
||||
"username": stored_user.get("username"),
|
||||
"needs_verification": True
|
||||
}, 403)
|
||||
|
||||
flash('Bitte verifizieren Sie Ihre E-Mail-Adresse, bevor Sie sich einloggen.', 'error')
|
||||
return redirect(url_for('login'))
|
||||
flash('Bitte verifizieren Sie Ihr Konto mit dem Code aus der E-Mail, bevor Sie sich einloggen.', 'error')
|
||||
|
||||
return redirect(url_for('verify_account', username=stored_user.get("username")))
|
||||
|
||||
session['username'] = stored_user.get("username")
|
||||
session['display_name'] = stored_user.get("display_name") or stored_user.get("username")
|
||||
@@ -1991,7 +1987,7 @@ def verify_account():
|
||||
|
||||
if not username or not token:
|
||||
flash("Bitte Benutzername und Token eingeben.", "error")
|
||||
return redirect(url_for("verify_account"))
|
||||
return redirect(url_for("verify_account", username=username))
|
||||
|
||||
user = _find_user(username)
|
||||
if not user:
|
||||
@@ -2002,8 +1998,6 @@ def verify_account():
|
||||
flash("Konto ist bereits verifiziert. Bitte einloggen.", "success")
|
||||
return redirect(url_for("login"))
|
||||
|
||||
# Die Funktion verify_user_token übernimmt jetzt das Hashing und den Vergleich.
|
||||
# Sie gibt True zurück, wenn es passt, und False, wenn der Token falsch ist.
|
||||
is_valid = user_store.verify_user_token(username, token)
|
||||
|
||||
if is_valid:
|
||||
@@ -2016,6 +2010,60 @@ def verify_account():
|
||||
prefilled_username = request.args.get("username", "")
|
||||
return render_template("verify.html", username=prefilled_username)
|
||||
|
||||
|
||||
@app.route("/resend-token", methods=["POST"])
|
||||
def resend_token():
|
||||
username = (request.form.get("username") or "").strip()
|
||||
user = _find_user(username)
|
||||
|
||||
if not user:
|
||||
flash("Benutzer nicht gefunden.", "error")
|
||||
return redirect(url_for("verify_account"))
|
||||
|
||||
if user.get("verified"):
|
||||
flash("Konto ist bereits verifiziert.", "info")
|
||||
return redirect(url_for("login"))
|
||||
|
||||
new_token = secrets.token_hex(3).upper()
|
||||
user_store.update_verification_token(user["username"], new_token)
|
||||
|
||||
if send_register_token(user["email"], new_token):
|
||||
flash("Ein neuer Bestätigungscode wurde an Ihre E-Mail-Adresse gesendet.", "success")
|
||||
else:
|
||||
flash("E-Mail konnte nicht gesendet werden. Bitte versuchen Sie es später erneut.", "error")
|
||||
|
||||
return redirect(url_for("verify_account", username=username))
|
||||
|
||||
|
||||
@app.route("/change-email", methods=["POST"])
|
||||
def change_email_and_resend():
|
||||
username = (request.form.get("username") or "").strip()
|
||||
new_email = (request.form.get("new_email") or "").strip().lower()
|
||||
|
||||
if not username or not new_email or "@" not in new_email:
|
||||
flash("Bitte geben Sie eine gültige E-Mail-Adresse ein.", "error")
|
||||
return redirect(url_for("verify_account", username=username))
|
||||
|
||||
user = _find_user(username)
|
||||
if not user:
|
||||
flash("Benutzer nicht gefunden.", "error")
|
||||
return redirect(url_for("verify_account"))
|
||||
|
||||
if user_store.email_exists(new_email):
|
||||
flash("Diese E-Mail-Adresse wird bereits verwendet.", "error")
|
||||
return redirect(url_for("verify_account", username=username))
|
||||
|
||||
new_token = secrets.token_hex(3).upper()
|
||||
|
||||
user_store.update_user_email_and_token(username, new_email, new_token)
|
||||
|
||||
if send_register_token(new_email, new_token):
|
||||
flash("E-Mail-Adresse erfolgreich geändert und neuer Code gesendet.", "success")
|
||||
else:
|
||||
flash("E-Mail-Adresse geändert, aber der Code konnte nicht gesendet werden.", "error")
|
||||
|
||||
return redirect(url_for("verify_account", username=username))
|
||||
|
||||
@app.route('/download-sample')
|
||||
def download_sample():
|
||||
# Ensure the file is only served from the specific directory
|
||||
|
||||
Reference in New Issue
Block a user