本文最后由 森林生灵 于 2017/08/25 10:29:54 编辑
已知 Z-Blog 的权限设置的切入点 Filter_Plugin_Zbp_CheckRights ,但在其官方 WiKi 中搜索却什么说明也没有。为了更直观的了解系统群组的权限机制最好先安装一下 Z-Blog 角色分配器(Howl) 插件 https://app.zblogcn.com/?id=235 ,通过此插件我们可以直观的看到 Z-Blog 系统共有 6 个级别的群组,按权限高低依次为管理员组、网站编辑组、作者组、协作者组、评论者组、游客组,其相对应的权限级别依次为 1、2、3、4、5、6。
2017.8.25 更新:由于 Z-Blog 角色分配器(Howl) 插件也是切入点也是 Filter_Plugin_Zbp_CheckRights ,新权限设定此切入点在某种情况下会使得此插件失效,故新权限设定的切入点应先于 Filter_Plugin_Zbp_CheckRights 才可以,此处应使用 Filter_Plugin_Zbp_Load_Pre 设定新权限。
RegisterPlugin('Demo', 'ActivePlugin_Demo'); function ActivePlugin_Demo() { Add_Filter_Plugin('Filter_Plugin_Zbp_Load_Pre', 'Demo_Zbp_Load_Pre'); Add_Filter_Plugin('Filter_Plugin_Cmd_Begin', 'Demo_Cmd_Begin'); Add_Filter_Plugin('Filter_Plugin_Login_Header', 'Demo_Login_Header'); } function Demo_Zbp_Load_Pre() { global $zbp, $actions; // 操作名称,最大权限等级( 6 代表游客组所拥有的权限),操作简介 $arr = array( array('action' => 'LostPWD', 'level' => 6, 'lang' => '忘记密码'), array('action' => 'SignUp', 'level' => 6, 'lang' => '用户注册'), ); foreach ($arr as $key => $value) { $actions[$arr[$key]['action']] = $arr[$key]['level']; $zbp->lang['actions'][$arr[$key]['action']] = $arr[$key]['lang']; } } function Demo_Cmd_Begin() { global $zbp; switch (GetVars('act', 'GET')) { // 忘记密码表单 case 'LostPWD': // 访问 http://localhost/zblogphp/zb_system/cmd.php?act=LostPWD 时跳转 Redirect('login.php?act=LostPWD'); break; // 用户注册表单 case 'SignUp': //访问 http://localhost/zblogphp/zb_system/cmd.php?act=SignUp 时跳转 Redirect('login.php?act=SignUp'); break; default: break; } } function Demo_LostPassword_Form() { global $zbp; // 鉴权,看当前用户所在群组是否有权执行 LostPWD 操作 if (!$zbp->CheckRights('LostPWD')) { $zbp->ShowError(6); die(); } ### } function Demo_SignUp_Form() { global $zbp; // 鉴权,看当前用户所在群组是否有权执行 SignUp 操作 if (!$zbp->CheckRights('SignUp')) { $zbp->ShowError(6); die(); } ### } function Demo_Login_Header() { global $zbp; // 拦截 login.php 登录页 $action = GetVars('act', 'GET'); switch ($action) { // 重置密码表单 case 'LostPWD': Demo_LostPassword_Form(); break; // 用户注册表单 case 'SignUp': Demo_SignUp_Form(); break; default: echo '<script>alert("伪造请求已被拦截!");</script>'; } } function InstallPlugin_Demo() { global $zbp; ### } function UninstallPlugin_Demo() { global $zbp; ### }
本文标题:为Z-Blog群组设置新权限
版权声明:本文使用「署名 4.0 国际」创作共享协议,转载或使用请遵守署名协议。
上一篇:树莓派配置USB无线网卡