modified: web/blueprints/auth.py

modified:   web/blueprints/group_admin.py
	modified:   web/blueprints/panel.py
	modified:   web/blueprints/site_admin.py
	modified:   web/templates/admin/base.html
	modified:   web/templates/admin/dashboard.html
	modified:   web/templates/admin/group_edit.html
	modified:   web/templates/admin/group_members.html
	modified:   web/templates/admin/groups.html
	modified:   web/templates/admin/user_edit.html
	modified:   web/templates/admin/users.html
	modified:   web/templates/auth/admin_login.html
	modified:   web/templates/auth/login.html
	modified:   web/templates/base.html
	modified:   web/templates/group_admin/base.html
	modified:   web/templates/group_admin/dashboard.html
	modified:   web/templates/group_admin/database.html
	modified:   web/templates/group_admin/member_edit.html
	modified:   web/templates/group_admin/members.html
	modified:   web/templates/panel/no_db.html
This commit is contained in:
SimolZimol
2026-04-01 02:55:32 +02:00
parent 93999d1c0d
commit c9c684f97a
21 changed files with 4633 additions and 184 deletions

View File

@@ -64,12 +64,12 @@ def group_new():
name = request.form.get("name", "").strip()
desc = request.form.get("description", "").strip()
if not name:
flash("Gruppenname darf nicht leer sein.", "danger")
flash("Group name must not be empty.", "danger")
elif db.get_group_by_name(name):
flash("Eine Gruppe mit diesem Namen existiert bereits.", "danger")
flash("A group with that name already exists.", "danger")
else:
db.create_group(name, desc)
flash(f"Gruppe '{name}' erstellt.", "success")
flash(f"Group '{name}' created.", "success")
return redirect(url_for("site_admin.groups"))
return render_template("admin/group_edit.html", group=None)
@@ -79,16 +79,16 @@ def group_new():
def group_edit(group_id):
group = db.get_group_by_id(group_id)
if not group:
flash("Gruppe nicht gefunden.", "danger")
flash("Group not found.", "danger")
return redirect(url_for("site_admin.groups"))
if request.method == "POST":
name = request.form.get("name", "").strip()
desc = request.form.get("description", "").strip()
if not name:
flash("Gruppenname darf nicht leer sein.", "danger")
flash("Group name must not be empty.", "danger")
else:
db.update_group(group_id, name, desc)
flash("Gruppe aktualisiert.", "success")
flash("Group updated.", "success")
return redirect(url_for("site_admin.groups"))
return render_template("admin/group_edit.html", group=group)
@@ -97,7 +97,7 @@ def group_edit(group_id):
@admin_required
def group_delete(group_id):
db.delete_group(group_id)
flash("Gruppe gelöscht.", "success")
flash("Group deleted.", "success")
return redirect(url_for("site_admin.groups"))
@@ -120,7 +120,7 @@ def group_member_add(group_id):
role = request.form.get("role", "member")
if user_id:
db.add_group_member(user_id, group_id, role)
flash("Mitglied hinzugefügt.", "success")
flash("Member added.", "success")
return redirect(url_for("site_admin.group_members", group_id=group_id))
@@ -128,7 +128,7 @@ def group_member_add(group_id):
@admin_required
def group_member_remove(group_id, user_id):
db.remove_group_member(user_id, group_id)
flash("Mitglied entfernt.", "success")
flash("Member removed.", "success")
return redirect(url_for("site_admin.group_members", group_id=group_id))
@@ -141,7 +141,7 @@ def group_member_toggle_role(group_id, user_id):
new_role = "member" if member["role"] == "admin" else "admin"
perms = member["permissions"] if isinstance(member["permissions"], dict) else (_json.loads(member["permissions"]) if member["permissions"] else {})
db.update_member(user_id, group_id, new_role, perms)
flash(f"Rolle auf '{new_role}' geändert.", "success")
flash(f"Role changed to '{new_role}'.", "success")
return redirect(url_for("site_admin.group_members", group_id=group_id))
@@ -164,12 +164,12 @@ def user_new():
password = request.form.get("password", "")
is_site_admin = request.form.get("is_site_admin") == "1"
if not username or not email or not password:
flash("Alle Felder sind Pflichtfelder.", "danger")
flash("All fields are required.", "danger")
elif db.get_user_by_username(username):
flash("Benutzername bereits vergeben.", "danger")
flash("Username already taken.", "danger")
else:
db.create_user(username, email, password, is_site_admin)
flash(f"Nutzer '{username}' erstellt.", "success")
flash(f"User '{username}' created.", "success")
return redirect(url_for("site_admin.users"))
return render_template("admin/user_edit.html", user=None)
@@ -179,7 +179,7 @@ def user_new():
def user_edit(user_id):
user = db.get_user_by_id(user_id)
if not user:
flash("Nutzer nicht gefunden.", "danger")
flash("User not found.", "danger")
return redirect(url_for("site_admin.users"))
if request.method == "POST":
username = request.form.get("username", "").strip()
@@ -189,8 +189,8 @@ def user_edit(user_id):
db.update_user(user_id, username, email, is_site_admin)
if new_password:
db.change_password(user_id, new_password)
flash("Passwort geändert.", "info")
flash("Nutzer aktualisiert.", "success")
flash("Password changed.", "info")
flash("User updated.", "success")
return redirect(url_for("site_admin.users"))
return render_template("admin/user_edit.html", user=user)
@@ -199,10 +199,10 @@ def user_edit(user_id):
@admin_required
def user_delete(user_id):
if user_id == session.get("user_id"):
flash("Du kannst dich nicht selbst löschen.", "danger")
flash("You cannot delete yourself.", "danger")
else:
db.delete_user(user_id)
flash("Nutzer gelöscht.", "success")
flash("User deleted.", "success")
return redirect(url_for("site_admin.users"))
@@ -213,13 +213,13 @@ def user_delete(user_id):
@site_admin.route("/view-group/<int:group_id>")
@admin_required
def view_group(group_id):
"""Site-Admin wechselt temporär in eine Grup­pe, um deren MC-Daten zu sehen."""
"""Site Admin temporarily switches into a group to view its MC data."""
group = db.get_group_by_id(group_id)
if not group:
flash("Gruppe nicht gefunden.", "danger")
flash("Group not found.", "danger")
return redirect(url_for("site_admin.dashboard"))
if not db.has_db_configured(group_id):
flash("Für diese Gruppe ist noch keine Datenbank konfiguriert.", "warning")
flash("No database configured for this group.", "warning")
return redirect(url_for("site_admin.dashboard"))
# Alle Berechtigungen als Admin
all_perms = {k: True for k in ["view_dashboard","view_players","view_sessions",