Access.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 海豚PHP框架 [ DolphinPHP ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2016~2017 河源市卓锐科技有限公司 [ http://www.zrthink.com ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://dolphinphp.com
  8. // +----------------------------------------------------------------------
  9. // | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
  10. // +----------------------------------------------------------------------
  11. namespace app\admin\model;
  12. use think\Model;
  13. use think\Request;
  14. /**
  15. * 统一授权模型
  16. * @package app\admin\model
  17. */
  18. class Access extends Model
  19. {
  20. // 设置当前模型对应的完整数据表名称
  21. protected $table = '__ADMIN_ACCESS__';
  22. /**
  23. * 获取用户授权节点
  24. * @param int $uid 用户id
  25. * @param string $group 权限分组,可以以点分开模型名称和分组名称,如user.group
  26. * @author 蔡伟明 <314013107@qq.com>
  27. * @return array|bool
  28. */
  29. public function getAuthNode($uid = 0, $group = '')
  30. {
  31. if ($uid == 0 || $group == '') {
  32. $this->error = '缺少参数';
  33. return false;
  34. }
  35. if (strpos($group, '.')) {
  36. list($module, $group) = explode('.', $group);
  37. } else {
  38. $module = Request::instance()->module();
  39. }
  40. $map = [
  41. 'module' => $module,
  42. 'group' => $group,
  43. 'uid' => $uid
  44. ];
  45. return $this->where($map)->column('nid');
  46. }
  47. /**
  48. * 检查用户的某个节点是否授权
  49. * @param int $uid 用户id
  50. * @param string $group $group 权限分组,可以以点分开模型名称和分组名称,如user.group
  51. * @param int $node 需要检查的节点id
  52. * @author 蔡伟明 <314013107@qq.com>
  53. * @return bool
  54. */
  55. public function checkAuthNode($uid = 0, $group = '', $node = 0)
  56. {
  57. if ($uid == 0 || $group == '' || $node == 0) {
  58. $this->error = '缺少参数';
  59. return false;
  60. }
  61. // 获取该用户的所有授权节点
  62. $nodes = $this->getAuthNode($uid, $group);
  63. if (!$nodes) {
  64. $this->error = '该用户没有授权任何节点';
  65. return false;
  66. }
  67. $nodes = array_flip($nodes);
  68. if (isset($nodes[$node])) {
  69. return true;
  70. } else {
  71. $this->error = '未授权';
  72. return false;
  73. }
  74. }
  75. }