rabin 3 years ago
parent
commit
76a72ca2b3
5 changed files with 110 additions and 35 deletions
  1. 2 2
      database/admin.php
  2. 14 0
      database/menu_func.php
  3. 28 22
      database/role.php
  4. 38 6
      src/Auth.php
  5. 28 5
      src/Database.php

+ 2 - 2
database/admin.php

@@ -156,8 +156,8 @@ return array
 	/*该方法用check替代
 	'start' => array
 	(
-		'update' => 'manage/auth.check',
-		'insert' => 'manage/auth.check',
+		'update' => 'manage/auth.checkEmail',
+		'insert' => 'manage/auth.checkEmail',
 	),
 	*/
 	'end' => array

+ 14 - 0
database/menu_func.php

@@ -57,6 +57,20 @@ return array
 			'search'	=> 'select',
 		),
 
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序-数字越小越靠前',
+			'default' 	=> '100',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+			'search'	=> 'order',
+			'list'		=> true,
+			'order'		=> 'asc',
+			'edit'		=> true,
+		),
+
 		'state'		=> array
 		(
 			'type' 		=> 'tinyint-1',

+ 28 - 22
database/role.php

@@ -27,7 +27,7 @@ $oper = array
 	3 => '编辑',
 	4 => '新增',
 	5 => '删除',
-	6 => '其他',
+	//6 => '其他',
 );
 
 # 是否只能管理自己发布的内容
@@ -127,13 +127,6 @@ $config = array
 			'search'	=> 'order',
 			'list'		=> true,
 		),
-
-		'hr0'		=> array
-		(
-			'name' 		=> '基本设置',
-			'class'		=> '',//本项必须填写
-			'attr'		=> '',
-		),
 		
 		'name'		=> array
 		(
@@ -147,6 +140,21 @@ $config = array
 			'list_name'	=> '角色名',//定义列表页的名称
 			'list'		=> true,
 			'edit'		=> true,
+			'tab'		=> 0,
+		),
+
+		'key'		=> array
+		(
+			'type' 		=> 'varchar-100',
+			'name' 		=> '角色标识-如输入标识,后台可以根据角色标识来自定义某些权限',
+			'default' 	=> '',
+			'desc' 		=> '角色标识',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			//'search'	=> 'fulltext',
+			//'list'		=> true,
+			//'modal'		=> 'test',
+			'tab'		=> 1,
 		),
 
 		'role_id'		=> array
@@ -161,6 +169,7 @@ $config = array
 			'list'		=> '{role_id}',
 			'option' 	=> $role,
 			'edit'		=> true,
+			'tab'		=> 1,
 		),
 
 		'self'		=> array
@@ -173,6 +182,7 @@ $config = array
 			'update'	=> 'radio',
 			'option'	=> $self,
 			'auth'		=> '"{my_role_id}"==1',
+			'tab'		=> 1,
 		),
 
 		'col_select'		=> array
@@ -184,6 +194,7 @@ $config = array
 			'match' 	=> 'option',
 			'update'	=> 'text',
 			'auth'		=> '"{my_role_id}"==1',
+			'tab'		=> 1,
 		),
 
 		'col_insert'		=> array
@@ -195,6 +206,7 @@ $config = array
 			'match' 	=> 'option',
 			'update'	=> 'text',
 			'auth'		=> '"{my_role_id}"==1',
+			'tab'		=> 1,
 		),
 
 		'col_update'		=> array
@@ -206,6 +218,7 @@ $config = array
 			'match' 	=> 'option',
 			'update'	=> 'text',
 			'auth'		=> '"{my_role_id}"==1',
+			'tab'		=> 1,
 		),
 		
 		/*
@@ -235,22 +248,11 @@ $config = array
 			'list'		=> true,
 		),
 		*/
-	
-		
-		#设置分割条
-		/*
-		'hr1'		=> array
-		(
-			'name' 		=> '基本信息',
-			'class'		=> '',//本项必须填写
-			'attr'		=> '',
-		),
-		*/
 		
 		'oper'		=> array
 		(
 			'type' 		=> 'varchar-24',
-			'name' 		=> '操作权限',
+			'name' 		=> '通用操作权限',
 			'default' 	=> array(1,2,3),
 			'desc' 		=> '请选择操作权限',
 			'match' 	=> 'is_string',
@@ -258,12 +260,14 @@ $config = array
 			'option'	=> $oper,
 		),
 
+		/*
 		'hr1'		=> array
 		(
 			'name' 		=> '菜单权限设置',
 			'class'		=> '',//本项必须填写
 			'attr'		=> '',
 		),
+		*/
 
 		'auth'		=> array
 		(
@@ -398,7 +402,9 @@ $config = array
 		'button' => array
 		(
 			//'更新接口' => 'manage/api.update',
-		)
+		),
+
+		'tab' => array('基本权限设置', '高级设置'),
 	),
 
 	# request 请求接口定义
@@ -523,7 +529,7 @@ $config['struct']['reorder'] = array
 	'default' 	=> '1',
 	'desc' 		=> '请输入排序',
 	'match' 	=> 'option',
-	'update'	=> 'text',
+	//'update'	=> 'text',
 	'search'	=> 'order',
 	'list'		=> true,
 	'order'		=> 'desc',

+ 38 - 6
src/Auth.php

@@ -44,17 +44,49 @@ class Auth
         ));
     }
 
+    # 检测菜单权限和功能
+    public function check($name, $menu, $func = false)
+    {
+        $config = array
+        (
+            '列表' => 1,
+            '搜索' => 2,
+            '编辑' => 3,
+            '新增' => 4,
+            '删除' => 5,
+            //'查看' => 6,
+            //'操作' => 7,
+        );
+        $reorder = 100;
+        if (isset($config[$name])) {
+            $state = $this->oper($config[$name]);
+            if (!$state) {
+                return false;
+            }
+            $reorder = $config[$name];
+        }
+        return $this->checkFunc($menu, $func, $name, $reorder);
+    }
+
     # 检测功能
-    public function checkFunc($key, $func, $name)
+    public function checkFunc($key, $func, $name, $reorder = 1)
     {
-        $menu = Dever::db('manage/menu')->one(array('key' => $key));
+        if (is_numeric($key)) {
+            $menu = Dever::db('manage/menu')->one(array('id' => $key));
+        } else {
+            $menu = Dever::db('manage/menu')->one(array('key' => $key));
+        }
+        
         if ($menu) {
+            if (!$func) {
+                $func = md5(base64_encode($name));
+            }
             $info = Dever::db('manage/menu_func')->one(array('key' => $func, 'menu_id' => $menu['id']));
             if (!$info) {
-                $func_id = Dever::db('manage/menu_func')->insert(array('name' => $name, 'key' => $func, 'menu_id' => $menu['id']));
+                $func_id = Dever::db('manage/menu_func')->insert(array('name' => $name, 'key' => $func, 'menu_id' => $menu['id'], 'reorder' => $reorder));
             } else {
                 if ($info['name'] != $name) {
-                    Dever::db('manage/menu_func')->update(array('name' => $name, 'where_id' => $info['id']));
+                    Dever::db('manage/menu_func')->update(array('name' => $name, 'reorder' => $reorder, 'where_id' => $info['id']));
                 }
                 $func_id = $info['id'];
             }
@@ -647,11 +679,11 @@ class Auth
     }
 
     /**
-     * check
+     * checkEmail
      *
      * @return mixed
      */
-    public function check($id)
+    public function checkEmail($id)
     {
         $id = Dever::input('update_where_id');
 

+ 28 - 5
src/Database.php

@@ -1078,9 +1078,11 @@ class Database
      */
     public function list_button()
     {
+        /*
         if (Dever::load('manage/auth.oper', 2) == false) {
             return '';
         }
+        */
 
         $config = $this->config();
 
@@ -1129,11 +1131,11 @@ class Database
 
         # 列表页按钮
         if (isset($config['manage']['button'])) {
-            $result .= $this->button_list($config['manage']['button']);
+            $result .= $this->list_button_show($config['manage']['button']);
         }
         /*
         if (Dever::load('manage/auth.oper', 6) != false && isset($config['manage']['button'])) {
-            $result .= $this->button_list($config['manage']['button']);
+            $result .= $this->list_button_show($config['manage']['button']);
         }*/
 
         return $result;
@@ -1147,9 +1149,11 @@ class Database
     public function update_button()
     {
         # 新增权限
+        /*
         if (Dever::load('manage/auth.oper', 2) == false) {
             Dever::alert('你没有权限');
         }
+        */
 
         $info = $this->info();
 
@@ -1176,7 +1180,7 @@ class Database
         return $result;
     }
 
-    private function button_list($button)
+    private function list_button_show($button)
     {
         $result = '';
         $refer = Dever::input('refer');
@@ -1189,6 +1193,13 @@ class Database
             if ($manage && isset($manage['deleteButton']) && in_array($k, $manage['deleteButton'])) {
                 continue;
             }
+            # 增加细分权限
+            /*
+            if (!Dever::load('manage/auth.check', $k, $this->menu_id)) {
+                continue;
+            }
+            */
+
             if (is_array($v)) {
                 if ($v[0] == 'location') {
                     if ($v[1] == 'add') {
@@ -1269,11 +1280,24 @@ class Database
      */
     public function list_search()
     {
+        # 将以下判断合并
+        # 权限验证
+        if (!Dever::load('manage/auth.check', '搜索', $this->menu_id)) {
+            return '';
+        }
+
+        /*
         # 新增权限
         if (Dever::load('manage/auth.oper', 2) == false) {
             return '';
         }
 
+        if (!Dever::load('manage/auth.checkFunc', $this->menu_id, false, '搜索')) {
+            return '';
+        }
+        */
+
+
         $config = $this->config();
 
         $result = '';
@@ -1575,7 +1599,7 @@ class Database
 
             # 列表页按钮
             if (isset($config['manage']['search_button'])) {
-                $btn .= $this->button_list($config['manage']['search_button']);
+                $btn .= $this->list_button_show($config['manage']['search_button']);
             }
 
             $result .= $btn . $node[1];
@@ -1680,7 +1704,6 @@ class Database
      */
     public function list_thead($type = false)
     {
-        # 新增权限
         if (Dever::load('manage/auth.oper', 1) == false) {
             Dever::alert('你没有权限');
         }