from functools import wraps from flask import session, redirect, url_for, flash from db import fetch_one def login_required(view_func): @wraps(view_func) def wrapper(*args, **kwargs): if not session.get('user_id'): flash('Bitte zuerst anmelden.', 'warning') return redirect(url_for('login')) return view_func(*args, **kwargs) return wrapper def admin_required(view_func): @wraps(view_func) def wrapper(*args, **kwargs): user_id = session.get('user_id') if not user_id: flash('Bitte zuerst anmelden.', 'warning') return redirect(url_for('login')) row = fetch_one( ''' SELECT 1 FROM benutzer_gruppen bg JOIN gruppen g ON g.id = bg.gruppen_id WHERE bg.benutzer_id = %s AND g.gruppenname = 'Admins' ''', (user_id,), ) if not row: flash('Keine Berechtigung für diesen Bereich.', 'danger') return redirect(url_for('dashboard')) return view_func(*args, **kwargs) return wrapper