用超级管理员账号在子站删了一篇文章,审计日志显示操作者是子站编辑,按人追责时对不上。乍看像缓存或者权限的锅,追下去往往不是。
if (is_super_admin(get_current_user_id())) {
$operator = 'super_admin:' . get_current_user_id();
}
// 日志行同时写入 get_current_blog_id()
追下去是这么回事:日志插件读 current_user 的 roles 时只看当前站点,超级管理员在子站没有角色记录,被回退成该站最早的管理员。日志也没单独存 blog_id。
「超级管理员审计记录」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。
同一份配置存在多处的,先确认改的是被加载的那一份。
具体做法是,记录前判断 is_super_admin;日志同时存 user_id 和 blog_id;回填最近的历史记录 标注站点。
验收就看一点,新日志里操作者显示超级管理员,站点列是子站,历史记录能按 blog_id 对上。
