39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
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
|