优化后台业务
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
"""
|
||||
from functools import wraps
|
||||
|
||||
from flask import request, redirect, url_for, session, jsonify
|
||||
from flask import request, redirect, url_for, session, jsonify, g
|
||||
|
||||
from utils.db import get_db
|
||||
|
||||
@@ -13,15 +13,22 @@ def is_session_user_valid():
|
||||
uid = session.get('user_id')
|
||||
if not uid:
|
||||
return False
|
||||
cached_user = getattr(g, '_current_user_row', None)
|
||||
if cached_user and cached_user.get('id') == uid:
|
||||
return True
|
||||
try:
|
||||
conn = get_db()
|
||||
with conn.cursor() as cur:
|
||||
cur.execute("SELECT id FROM users WHERE id = %s", (uid,))
|
||||
cur.execute(
|
||||
"SELECT id, username, is_admin, role, created_by_id FROM users WHERE id = %s",
|
||||
(uid,)
|
||||
)
|
||||
row = cur.fetchone()
|
||||
conn.close()
|
||||
if not row:
|
||||
session.clear()
|
||||
return False
|
||||
g._current_user_row = row
|
||||
return True
|
||||
except Exception:
|
||||
session.clear()
|
||||
@@ -34,16 +41,19 @@ def get_current_admin_role():
|
||||
if not uid:
|
||||
return None, None
|
||||
try:
|
||||
conn = get_db()
|
||||
with conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"SELECT id, username, is_admin, role, created_by_id FROM users WHERE id = %s",
|
||||
(uid,)
|
||||
)
|
||||
row = cur.fetchone()
|
||||
conn.close()
|
||||
row = getattr(g, '_current_user_row', None)
|
||||
if not row or row.get('id') != uid:
|
||||
conn = get_db()
|
||||
with conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"SELECT id, username, is_admin, role, created_by_id FROM users WHERE id = %s",
|
||||
(uid,)
|
||||
)
|
||||
row = cur.fetchone()
|
||||
conn.close()
|
||||
if not row:
|
||||
return None, None
|
||||
g._current_user_row = row
|
||||
role = (row.get('role') or '').strip().lower()
|
||||
if not role:
|
||||
role = 'super_admin' if row.get('is_admin') and row.get('created_by_id') is None else (
|
||||
|
||||
Reference in New Issue
Block a user