From 1adba1fbf004198abdd55f9a7600ff2fd93d84f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=99=AF=E7=AB=8B?= Date: Fri, 17 Mar 2017 16:06:27 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=9B=B4=E6=96=B0]=E6=9D=83=E9=99=90=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E5=88=B7=E6=96=B0=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/admin/model/Node.php | 33 ++++++++++++++++++++++++++++++++ application/common.php | 14 ++------------ 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/application/admin/model/Node.php b/application/admin/model/Node.php index d376cb43a..d0b83b9a7 100644 --- a/application/admin/model/Node.php +++ b/application/admin/model/Node.php @@ -39,6 +39,39 @@ class Node { return false; } + /** + * 获取授权节点 + * @staticvar array $nodes + * @return array + */ + public static function getAuthNode() { + static $nodes = []; + if (empty($nodes)) { + $nodes = cache('need_access_node'); + if (empty($nodes)) { + $nodes = Db::name('SystemNode')->where('is_auth', '1')->column('node'); + cache('need_access_node', $nodes); + } + } + return $nodes; + } + + /** + * 检查用户节点权限 + * @param string $node + * @return bool + */ + public static function checkAuthNode($node) { + $auth_node = strtolower($node); + if (session('user.username') === 'admin' || stripos($node, 'admin/index') === 0) { + return true; + } + if (!in_array($auth_node, self::getAuthNode())) { + return true; + } + return in_array($auth_node, (array) session('user.nodes')); + } + /** * 获取系统代码节点 * @return array diff --git a/application/common.php b/application/common.php index e238afb31..00d518f70 100644 --- a/application/common.php +++ b/application/common.php @@ -13,6 +13,7 @@ // +---------------------------------------------------------------------- +use app\admin\model\Node as NodeModal; use think\Config; use think\Db; use Wechat\Loader; @@ -73,18 +74,7 @@ function decode($string) { * @return bool */ function auth($node) { - $nodes = cache('need_access_node'); - if (empty($nodes)) { - $nodes = Db::name('SystemNode')->where('is_auth', '1')->column('node'); - cache('need_access_node', $nodes); - } - if (session('user.username') === 'admin' || stripos($node, 'admin/index') === 0) { - return true; - } - if (!in_array(strtolower($node), array_values($nodes))) { - return true; - } - return in_array(strtolower($node), (array) session('user.nodes')); + return NodeModal::checkAuthNode($node); } /**