Files
JQC_multi_tenant/control/panel/decorators.py
T
2026-06-27 11:11:00 -04:00

31 lines
1.0 KiB
Python

"""
control/panel/decorators.py
----------------------------
Access-control decorator for the superadmin control panel (MT-4).
"""
from functools import wraps
from flask import session, redirect, url_for, request, flash
from control.base import control_session
from control.models import Superadmin
def superadmin_required(f):
"""Redirect to /login if the session has no valid superadmin."""
@wraps(f)
def decorated(*args, **kwargs):
sa_id = session.get('sa_id')
if not sa_id:
flash('Please log in.', 'warning')
return redirect(url_for('auth.login', next=request.path))
# Re-validate: account might have been deactivated since login.
with control_session() as s:
sa = s.get(Superadmin, sa_id)
if sa is None or not sa.active:
session.clear()
flash('Your superadmin account is no longer active.', 'danger')
return redirect(url_for('auth.login'))
return f(*args, **kwargs)
return decorated