本文最后由 森林生灵 于 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无线网卡
   
  
 