From 386ecd440962a0e87dbad5ee9cf613446dbe363f Mon Sep 17 00:00:00 2001 From: Aiirondev Date: Sat, 25 Jul 2026 15:19:14 +0200 Subject: [PATCH] slight changes to the presets --- Web/app.py | 70 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 53 insertions(+), 17 deletions(-) diff --git a/Web/app.py b/Web/app.py index 703b2ac..d73c32a 100755 --- a/Web/app.py +++ b/Web/app.py @@ -6355,11 +6355,18 @@ def delete_item(id): flask.Response: Redirect to admin homepage """ if 'username' not in session: - flash('Ihnen ist es nicht gestattet auf dieser Internetanwendung, die eben besuchte Adrrese zu nutzen, versuchen sie es erneut nach dem sie sich mit einem berechtigten Nutzer angemeldet haben!', 'error') - return redirect(url_for('login')) - if not us.check_admin(session['username']): - flash('Ihnen ist es nicht gestattet auf dieser Internetanwendung, die eben besuchte Adrrese zu nutzen, versuchen sie es erneut nach dem sie sich mit einem berechtigten Nutzer angemeldet haben!', 'error') + flash('Nicht angemeldet.', 'error') return redirect(url_for('login')) + + current_permissions = us.get_effective_permissions(session['username']) + + if not current_permissions['actions'].get('can_delete', False): + flash('Ihnen fehlen die nötigen Berechtigungen, um diese Aktion (Löschen) auszuführen.', 'error') + return redirect(url_for('home')) + + if not cfg.MODULES.is_enabled('inventory'): + flash('Bibliotheks-Modul ist deaktiviert.', 'error') + return redirect(url_for('library')) # Resolve all related item ids (grouped variants) and load their data group_item_ids = it.get_group_item_ids(id) @@ -6414,12 +6421,16 @@ def delete_library_item(id): if 'username' not in session: flash('Nicht angemeldet.', 'error') return redirect(url_for('login')) - if not us.check_admin(session['username']): - flash('Administratorrechte erforderlich.', 'error') - return redirect(url_for('login')) + + current_permissions = us.get_effective_permissions(session['username']) + + if not current_permissions['actions'].get('can_delete', False): + flash('Ihnen fehlen die nötigen Berechtigungen, um diese Aktion (Löschen) auszuführen.', 'error') + return redirect(url_for('home')) + if not cfg.MODULES.is_enabled('library'): flash('Bibliotheks-Modul ist deaktiviert.', 'error') - return redirect(url_for('home_admin')) + return redirect(url_for('home')) # Verify item exists and is a library item try: @@ -6482,9 +6493,18 @@ def delete_library_item(id): def bulk_delete_items(): """Soft-delete multiple selected item groups in one request.""" if 'username' not in session: - return jsonify({'success': False, 'message': 'Nicht angemeldet'}), 401 - if not us.check_admin(session['username']): - return jsonify({'success': False, 'message': 'Administratorrechte erforderlich'}), 403 + flash('Nicht angemeldet.', 'error') + return redirect(url_for('login')) + + current_permissions = us.get_effective_permissions(session['username']) + + if not current_permissions['actions'].get('can_delete', False): + flash('Ihnen fehlen die nötigen Berechtigungen, um diese Aktion (Löschen) auszuführen.', 'error') + return redirect(url_for('home')) + + if not cfg.MODULES.is_enabled('inventory'): + flash('Bibliotheks-Modul ist deaktiviert.', 'error') + return redirect(url_for('library')) payload = request.get_json(silent=True) or {} item_ids = payload.get('item_ids') or request.form.getlist('item_ids') @@ -6538,11 +6558,18 @@ def edit_item(id): flask.Response: Redirect to admin homepage with status message """ if 'username' not in session: - flash('Ihnen ist es nicht gestattet auf dieser Internetanwendung, die eben besuchte Adrrese zu nutzen, versuchen sie es erneut nach dem sie sich mit einem berechtigten Nutzer angemeldet haben!', 'error') - return redirect(url_for('login')) - if not us.check_admin(session['username']): - flash('Ihnen ist es nicht gestattet auf dieser Internetanwendung, die eben besuchte Adrrese zu nutzen, versuchen sie es erneut nach dem sie sich mit einem berechtigten Nutzer angemeldet haben!', 'error') + flash('Nicht angemeldet.', 'error') return redirect(url_for('login')) + + current_permissions = us.get_effective_permissions(session['username']) + + if not current_permissions['actions'].get('can_edit', False): + flash('Ihnen fehlen die nötigen Berechtigungen, um diese Aktion (Löschen) auszuführen.', 'error') + return redirect(url_for('home')) + + if not cfg.MODULES.is_enabled('inventory'): + flash('Bibliotheks-Modul ist deaktiviert.', 'error') + return redirect(url_for('library')) # Strip whitespace from all text fields name = sanitize_form_value(request.form.get('name')) @@ -6663,6 +6690,17 @@ def edit_item(id): @app.route('/update_group', methods=['POST']) def update_group(): + + if 'username' not in session: + flash('Nicht angemeldet.', 'error') + return redirect(url_for('login')) + + current_permissions = us.get_effective_permissions(session['username']) + + if not current_permissions['actions'].get('can_edit', False): + flash('Ihnen fehlen die nötigen Berechtigungen, um diese Aktion (Löschen) auszuführen.', 'error') + return redirect(url_for('library')) + data = request.get_json() series_group_id = data.get('series_group_id') @@ -6723,8 +6761,6 @@ def report_damage(id): """Register a damage report entry for an item (admin only).""" if 'username' not in session: return jsonify({'success': False, 'message': 'Nicht angemeldet'}), 401 - if not us.check_admin(session['username']): - return jsonify({'success': False, 'message': 'Administratorrechte erforderlich'}), 403 payload = request.get_json(silent=True) or {} description = str(payload.get('description', '')).strip() or 'Schaden gemeldet'