23
2020
02

织梦新建部门表增加权限仅供部门查看阅读权限控制-待整理

1.文章权限arcrank

2.人权限M_Rank


如果用户权限!=100 (管理用户)

文章权限!=0

人权限=文章权限  才能阅读(本部门的)


1.游客权限为0,文章权限为开放浏览0,随便看,不可看有权限的文章。

2.用户为一般用户,权限为办公室权限,

  可以看开放浏览,泰安分局,不可以看其他科室权限的文章。

3.用户为管理员,对所有文章有权查看。


因此控制逻辑如下:

用户权限如果是科室的话就是11 12 13....  对应member表的rank字段

相应的文章权限如果是本部门就需要同样是11 12 13 对应arctype和archives表corebank的字段


3.1 先判断文章权限是否>10(即本部门浏览),就需要判断登录用户是否与文章权限一致。

3.2 如果文章权限为注册用户或者开放浏览,只需要判断用户权限是否>文章权限即可


4.测试

下载天地:泰安分局

视频点播:办公室

领导讲话:信息科

5.测试通过



arctype 开放浏览 corank=0;

corank 10 注册会员



访问时,从member表中读取用户rank    100


判断用户权限是否>阅读权限


如果> 允许阅读

如果< 不允许阅读


如果阅读权限='本部门',比如1.5

则读取改用户所在的用户部门 是否等于 文章作者的用户部门



编辑文章用户:

$urank = $cuserLogin->getUserRank();

只允许赋予100<该用户权限的权限

$dsql->SetQuery("Select * from #@__arcrank where adminrank<='$urank'");


1.增加/编辑用户部门

1.1新建部门表dede_depart

1.2 dede_admin 和 dede_memeber 表增加departId字段标识部门ID

1.3在sys_admin_user.add.htm 和xx.edit.htm表中增加部门选择字段

1.4 修改 add.php和edit.php的sql语句来更新部门ID

1.5 这里注意下id=1 即用户为admin时不修改部门号

1.6 删除用户只删除了admin表,没有删除member表,

导致再次新增用户时报“用户已存在”,需要修改下删除逻辑。




arctype 开放浏览 corank=0;

corank 10 注册会员



访问时,从member表中读取用户rank    100


判断用户权限是否>阅读权限


如果> 允许阅读

如果< 不允许阅读


如果阅读权限='本部门',比如1.5

则读取改用户所在的用户部门 是否等于 文章作者的用户部门



编辑文章用户:

$urank = $cuserLogin->getUserRank();

只允许赋予100<该用户权限的权限

$dsql->SetQuery("Select * from #@__arcrank where adminrank<='$urank'");


1.增加/编辑用户部门

1.1新建部门表dede_depart

1.2 dede_admin 和 dede_memeber 表增加departId字段标识部门ID

1.3在sys_admin_user.add.htm 和xx.edit.htm表中增加部门选择字段

1.4 修改 add.php和edit.php的sql语句来更新部门ID

1.5 这里注意下id=1 即用户为admin时不修改部门号

1.6 删除用户只删除了admin表,没有删除member表,

导致再次新增用户时报“用户已存在”,需要修改下删除逻辑。




2.设置阅读权限表arcrank表

增加相应的部门权限

注册会员改为泰安分局权限


3.修改plus/list.php代码

//文章阅读权限>10,用户权限>10&&!=100 则只有相等才能阅读

        if( $lv->Fields['corank']>10 &&$cfg_ml->M_Rank>10 &&$cfg_ml->M_Rank!=100 && $cfg_ml->M_Rank != $lv->Fields['corank'] )

        {

            $dsql->Execute('me' , "SELECT * FROM `#@__arcrank` ");

            while($row = $dsql->GetObject('me'))

            {

                $memberTypes[$row->rank] = $row->membername;

            }

            $memberTypes[0] = "游客或没权限会员";

            $msgtitle = "你没有权限浏览栏目:{$lv->Fields['typename']} !";

            $moremsg = "这个栏目需要 <font color='red'>".$memberTypes[$lv->Fields['corank']]."</font> 才能访问,你目前是:<font color='red'>".$memberTypes[$cfg_ml->M_Rank]."</font> !";

            include_once(DEDETEMPLATE.'/plus/view_msg_catalog.htm');

            exit();

        }else if($cfg_ml->M_Rank < $lv->Fields['corank']){

$dsql->Execute('me' , "SELECT * FROM `#@__arcrank` ");

            while($row = $dsql->GetObject('me'))

            {

                $memberTypes[$row->rank] = $row->membername;

            }

            $memberTypes[0] = "游客或没权限会员";

            $msgtitle = "你没有权限浏览栏目:{$lv->Fields['typename']} !";

            $moremsg = "这个栏目需要 <font color='red'>".$memberTypes[$lv->Fields['corank']]."</font> 才能访问,你目前是:<font color='red'>".$memberTypes[$cfg_ml->M_Rank]."</font> !";

            include_once(DEDETEMPLATE.'/plus/view_msg_catalog.htm');

            exit();

}

4.修改/plus/view.php代码

//会员级别不足

if(($needRank>10 && $cfg_ml->M_Rank>10 && $cfg_ml->M_Rank!=100 && $cfg_ml->M_Rank != $needRank && $arc->Fields['mid']!=$cfg_ml->M_ID))

    {

        $dsql->Execute('me' , "SELECT * FROM `#@__arcrank` ");

        while($row = $dsql->GetObject('me'))

        {

            $memberTypes[$row->rank] = $row->membername;

        }

        $memberTypes[0] = "游客或没权限会员";

        $msgtitle = "你没有权限浏览文档:{$arctitle} !";

        $moremsg = "这篇文档需要 <font color='red'>".$memberTypes[$needRank]."</font> 才能访问,你目前是:<font color='red'>".$memberTypes[$cfg_ml->M_Rank]."</font> !";

        include_once(DEDETEMPLATE.'/plus/view_msg.htm');

        exit();

    }

    else if(($needRank>1 && $cfg_ml->M_Rank < $needRank && $arc->Fields['mid']!=$cfg_ml->M_ID))

    {

        $dsql->Execute('me' , "SELECT * FROM `#@__arcrank` ");

        while($row = $dsql->GetObject('me'))

        {

            $memberTypes[$row->rank] = $row->membername;

        }

        $memberTypes[0] = "游客或没权限会员";

        $msgtitle = "你没有权限浏览文档:{$arctitle} !";

        $moremsg = "这篇文档需要 <font color='red'>".$memberTypes[$needRank]."</font> 才能访问,你目前是:<font color='red'>".$memberTypes[$cfg_ml->M_Rank]."</font> !";

        include_once(DEDETEMPLATE.'/plus/view_msg.htm');

        exit();

    }


5.修改article.edit.html archives.do.php 及archives.edit.htm

阅读权限的选择部分

如果是信息发布员,只能选择

本科室,注册人员,开放浏览


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。