dede将独立模块权限添加到用户权限分配
1、首先需要确认自己想要建立的模块,下面我就拿大家普遍开发的“人才招聘”模块进行讲解。
找到dede/inc/inc_menu.php,找到以下代码
“<m:top item='1_' name='常用操作' display='block'> <m:item name='网站栏目管理' link='catalog_main.php' ischannel='1' addalt='创建栏目' linkadd='catalog_add.php?listtype=all' rank='t_List,t_AccList' target='main' /> $menusMainlist7 $menusMainlist1”
在后面添加自己想要添加的模块,我的是人才招聘,所以我的代码如下“<m:item name='人才招聘' link='job_list.php' rank='member_job' target='main' />”
之后将同级栏目下的“grouplist.txt”打开,并在“>>会员管理”下面添加以下代码“>member_job>人才招聘”;
2、然后在后台dede目录下建立相应的"job_list.php",切记在创建文件的时候要添加“CheckPurview('c_New,member_Yzyx,member_job');”;然后就开始写自己需要的功能即可。
3、功能添加完善之后,接下来就是该给用户添加权限了,首先介绍添加管理员,该管理员的权限为‘信息发布员’,下图中授权栏目下面有一个模块权限,通过该位置就可以将人才招聘模块分配给新添加的管理员了。
在后台找到“sys_admin_user_add.php”,然后将“
// 判断复选框是否选中$jurArray = array('member_job'=>'人才招聘'');
”;放在代码“if($dopost=='add')”上面,然后找到在"dede/templets/sys_admin_user_add.htm",将以下代码放在授权栏目代码的下面“
<tr> <td height="30">模块权限:</td> <td style="text-align:left;"> <?php foreach($jurArray as $k=>$v){ $check = in_array($k,$row['jur'])?'checked=checked':''; echo "<input type='checkbox' name='jurisdiction[]' $check value='$k'/>$v "; }?> </td> </tr>
”;以上操作就是将人才招聘模块在添加管理员的时候显示在添加的页面,如下图:
4、那么如何添加到数据库呢,我查看了dede本身的权限分配是放在“@#__admintype”里面,但是这只是针对与一个权限组而言,没有针对于具体的某一个管理员。我是这样解决的,在“@#__admin”表里面新增了一个字段,我添加的字段为“alter table“@#__admin”add `jur` varchar(50) DEFAULT NULL,”这样的话就可以给每个管理员添加不同的模块权限了。在“sys_admin_user_add.php“ 里找到”if($dopost=='add')“在if里添加一下代码”
//模块权限 if(!empty($jurisdiction)){ $jurs = implode(' ',$jurisdiction); }
“
该代码的作用是将模块进行拼装,然后将以下代码”
//后台管理员 $inquery = "INSERT INTO `#@__admin`(id,usertype,userid,pwd,uname,typeid,tname,email) VALUES('$mid','$usertype','$userid','$pwd','$uname','$typeid','$tname','$email',); ";
“改为”//后台管理员 $inquery = "INSERT INTO `#@__admin`(id,usertype,userid,pwd,uname,typeid,tname,email,jur) VALUES('$mid','$usertype','$userid','$pwd','$uname','$typeid','$tname','$email',' $jurs'); ";“然后保存上传即可。
5、现在开始对分配的权限进行拼装,让用户登录的时候有该模块的权限。找到”include/userlogin.class.php"然后将“$this->userPurview = $row->purviews;”改为“$this->userPurview = $row->purviews.$row->jur;”
6、修改的也是一样,也需要在后台模版里面添加相应的代码,在“sys_admin_user_edit.php”里将“
// 判断复选框是否选中$jurArray = array('member_job'=>'人才招聘');
”放在顶部某个位置,然后在saveedit方法里面添加“
//模块权限 if(!empty($jurisdiction)){ $jurs = implode(' ',$jurisdiction); $jur =",jur=' $jurs'"; }else{ $jur =",jur=''"; }
”
然后将“ if($id!=1){ $query = "UPDATE `#@__admin` SET uname='$uname',usertype='$usertype',tname='$tname',email='$email',typeid='$typeid' $pwd WHERE id='$id'"; }”改为“ if($id!=1){ $query = "UPDATE `#@__admin` SET uname='$uname',usertype='$usertype',tname='$tname',email='$email',typeid='$typeid' $jur $pwd WHERE id='$id'"; }”