php 权限规范,项目人员权限验证

在需要验证项目人员权限的控制器中加入如下代码

~~~

//访问范围

public $visitRange;

protected function init()

{

$request = Request::instance();

$action = $request->action(true);

//获取当前action名称

switch ($action) {

case "addSubcontractContract":

case "listSubcontractContract":

case "editSubcontractContract":

case "delSubcontractContract":

//设置请求类型

$this->requestType = "post";

break;

case "getSubcontractContractById":

//设置请求类型

$this->requestType = "get|post";

break;

}

/**

* manager_staff 项目经理ID

* management_staff 项目人员ID

* material_staff 材料人员

* design_staff 设计人员

* special_staff 特殊人员ID

*/

//采用switch来处理每个请求接口不同的访问人

switch ($action) {

//有权限添加分包合同:项目经理,项目人员,特殊人员

case "addSubcontractContract":

$this->visitRange = 'manager_staff,management_staff,special_staff';

break;

case 'listSubcontractContract':

case 'getSubcontractContractById':

case "editSubcontractContract":

//有权限删除分包合同:项目经理,特殊权限人员

case "delSubcontractContract":

$this->visitRange = 'manager_staff,special_staff';

break;

}

//self::check($this->visitRange);

}

/**

* Note:

* Think:

* User: HuYang-TSJ

* Date: 2019/2/28 9:36

* @param $visitRange

* @throws RequestException

* @throws \think\db\exception\DataNotFoundException

* @throws \think\db\exception\ModelNotFoundException

* @throws \think\exception\DbException

*/

public function check($visitRange)

{

$projectIdArray = input('project_id');

$id = input('id');

if (!empty($id)) {

$res = SubConModel::field('id,project_id')->select($id);

$projectIdArray = array();

foreach ($res as $item) {

array_push($projectIdArray, $item['project_id']);

}

}

$project = ProjectStaff::where('project_id', 'in', $projectIdArray)->field('id,' . $visitRange)

->select();

$tempStaffId = '';

$visitRange = explode(',', $visitRange);

foreach ($project as $p) {

$p = $p->getData();

foreach ($visitRange as $item) {

$tempStaffId = $tempStaffId . $p[$item] . ',';

}

}

if (!empty($project)) {

$user = WebSys::getTokenUser()['id'];

if (!in_array($user, explode(',', $tempStaffId))) {

throw new RequestException([

'code' => 403,

'msg' => "无权访问,请在项目人员中修改所处职位!"

]);

}

}

}

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值