You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.9 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace app\admin\model;
use think\Model;
use think\facade\Request;
/**
* 统一授权模型
* @package app\admin\model
*/
class Access extends Model
{
// 设置当前模型对应的完整数据表名称
protected $name = 'admin_access';
/**
* 获取用户授权节点
* @param int $uid 用户id
* @param string $group 权限分组可以以点分开模型名称和分组名称如user.group
* @author 蔡伟明 <314013107@qq.com>
* @return array|bool
*/
public function getAuthNode($uid = 0, $group = '')
{
if ($uid == 0 || $group == '') {
$this->error = '缺少参数';
return false;
}
if (strpos($group, '.')) {
list($module, $group) = explode('.', $group);
} else {
$module = Request::module();
}
$map = [
'module' => $module,
'group' => $group,
'uid' => $uid
];
return $this->where($map)->column('nid');
}
/**
* 检查用户的某个节点是否授权
* @param int $uid 用户id
* @param string $group $group 权限分组可以以点分开模型名称和分组名称如user.group
* @param int $node 需要检查的节点id
* @author 蔡伟明 <314013107@qq.com>
* @return bool
*/
public function checkAuthNode($uid = 0, $group = '', $node = 0)
{
if ($uid == 0 || $group == '' || $node == 0) {
$this->error = '缺少参数';
return false;
}
// 获取该用户的所有授权节点
$nodes = $this->getAuthNode($uid, $group);
if (!$nodes) {
$this->error = '该用户没有授权任何节点';
return false;
}
$nodes = array_flip($nodes);
if (isset($nodes[$node])) {
return true;
} else {
$this->error = '未授权';
return false;
}
}
}