<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                >[info]本章節僅適用于1.3.2版本以上 從`1.3.2`版本開始,數據授權修改為分模塊設置,模塊內可分組。 ![](https://box.kancloud.cn/06c277f69540db85ddb78855f799c5d5_497x744.png) 在模塊信息文件`info.php`中,數據授權格式如下(以cms模塊為例): ``` // 授權配置 'access' => [ 'column' => [ 'title' => '欄目授權', 'page_tips' => '頁面提示', 'tips_type' => 'primary', 'nodes' => [ 'group' => 'column', 'table_name' => 'cms_column', 'primary_key' => 'id', 'parent_id' => 'pid', 'node_name' => 'name', 'model_name' => 'column', 'child' => [], ] ], ], ``` 其中,鍵值`column`為分組標識,建議使用英文單詞。 ``` // 授權配置 'access' => [ 'column' => [ 'title' => '欄目授權', 'nodes' => [ 'group' => 'column', 'table_name' => 'cms_column', 'primary_key' => 'id', 'parent_id' => 'pid', 'node_name' => 'name', ] ], 'type' => [ 'title' => '分類授權', 'nodes' => [ 'group' => 'type', 'table_name' => 'cms_type', 'primary_key' => 'id', 'parent_id' => 'pid', 'node_name' => 'name', ] ] ], ``` 授權頁面如下: ![](https://box.kancloud.cn/5def0c1a3c459cbdd5b573b13a939cbc_495x302.png) **頁面提示** 如果想在數據授權頁面顯示一些提示性文字,可配置 `page_tips`和 `tips_type`。 ``` // 授權配置 'access' => [ 'column' => [ 'title' => '欄目授權', 'page_tips' => '這是頁面提示', 'tips_type' => 'danger', 'nodes' => [ 'group' => 'column', 'table_name' => 'cms_column', 'primary_key' => 'id', 'parent_id' => 'pid', 'node_name' => 'name', ] ] ], ``` ![](https://box.kancloud.cn/0e9d7491d8ae2502267c9e98726ba08b_565x389.png) 下面講解最重要的配置參數`nodes`,所有的授權數據內容均在`nodes`內定義,在`nodes`內可定義的參數如下: * `group` 分組標識,名字自定義 * `table_name` 表名,表示要關聯哪張表,不需要填寫表前綴 * `primary_key` 主鍵字段名 * `parent_id` 父級id字段名 * `node_name` 權限節點字段名 * `model_name` 模型名(可選) * `child` 子節點配置信息,格式與父節點一致 `dp_cms_column`數據表有如下三個字段,分別對應`primary_key`、`parent_id`、`node_name`。 ![](https://box.kancloud.cn/ec0d6189920971c72a6e20a2a316f228_264x93.png) `table_name`定義表名后,系統會從該表讀取授權節點,比如上面的cms模塊配置 ![](https://box.kancloud.cn/be93b925a484b88fcaf14da06cb7a328_480x416.png) 在需要判斷當前用戶或者某個用戶是否有某些權限,可以使用Access模型的`getAuthNode`方法和`checkAuthNode`方法。 ### 按模型獲取數據 以上說的是讀取的數據在同一張表上,如果有些數據在另外一張表,那么就不好處理了。 如果遇到這樣的需求,可以設置模型名。 ~~~ // 授權配置 'access' => [ 'column' => [ 'title' => '欄目授權', 'nodes' => [ 'group' => 'column', 'table_name' => 'cms_column', 'primary_key' => 'id', 'parent_id' => 'pid', 'node_name' => 'name', 'module_name' => 'column', ] ] ], ~~~ 這樣配置的話,那你必須在你模塊下有名為`Column`的模型文件,路徑為:`\app\模塊名\model\Column.php` 除此之外,該模型下必須有一個特定的方法,方法名為`access`,你只需在這個方法返回你需要展示的數據即可。 ``` public function access() { return self::all(); } ``` 也可以使用Db類進行查詢數據,然后返回數據。返回的數據必須包含上面 `primary_key`, `parent_id` , `node_name`所定義的字段即可。 >[info]這種方法靈活性比較大,可以隨意查詢數據,只要返回的數據中,有包含上面設置的三個字段名id、pid、name即可。 ### 子節點定義 如果數據節點來自不多張表,并且表之間是關聯關系,那么需要定義子節點信息。 比如某招生系統中,院系節點、專業節點、班級節點分班在不同的表,但希望數據授權的時候,能集中授權,那么這種情況下,就需要定義子節點信息。 ``` // 授權配置 'access' => [ 'yx' => [ 'title' => '院系專業班級', 'nodes' => [ 'group' => 'yx', 'table_name' => 'admin_yxdm', 'primary_key' => 'YXDM', 'parent_id' => 'pid', 'node_name' => 'YXMC', 'model_name' => 'Yxdm', 'child' => [ 'group' => 'zy', 'table_name' => 'admin_zydm', 'primary_key' => 'ZYDH', 'parent_id' => 'pid', 'node_name' => 'ZYMC', 'child' => [ 'group' => 'bj', 'table_name' => 'admin_bjdm', 'primary_key' => 'BJDM', 'parent_id' => 'pid', 'node_name' => 'BJMC', ] ] ] ] ], ``` 在第一個`nodes`中,我們定義了`model_name`為`Yxdm`,那么我們需要創建一個模型文件,路徑為:`\app\模塊名\model\Yxdm.php` 在模型文件中,定義access方法 ``` public function access() { $data_list = self::all(['status' => 1]); foreach ($data_list as $key => $item) { $data_list[$key]['pid'] = 0; // 專業 $child = Db::name('admin_zydm')->where('YXDM', $item['YXDM'])->select(); if ($child) { foreach ($child as $k => $v) { $list_bj = Db::name('admin_bjdm') ->where('ZYDH', $v['ZYDH']) ->where('ND', config('curr_year')) ->select(); if ($list_bj) { $child[$k]['child'] = $list_bj; } } $data_list[$key]['child'] = $child; } } return $data_list; } ``` 最終返回的$data_list格式類似這樣: ``` array( array( 'YXDM' => 1, 'pid' => 0, 'YXMC' => '機電工程學院', 'child' => [ [ 'ZYDH' => 12, 'pid' => 0, 'ZYMC' => '電器自動化技術', 'child' => [ [ 'BJDM' => 1, 'pid' => 0, 'BJMC' => '18自動化1班', ], [ 'BJDM' => 2, 'pid' => 0, 'BJMC' => '18自動化2班', ] ] ], [ 'ZYDH' => 13, 'pid' => 0, 'ZYMC' => '模具設計與制造', 'child' => [ [ 'BJDM' => 3, 'pid' => 0, 'BJMC' => '18模具1班(兩年制)', ] ] ] ] ), ); ``` 授權頁面類似這樣 ![](https://box.kancloud.cn/06c277f69540db85ddb78855f799c5d5_497x744.png) ### 獲取用戶授權節點 ``` $nodes = get_auth_node(1, 'cms.column'); ``` 表示獲取用戶id為1的欄目授權節點,其中`column`是數據授權配置中`group`所定義的值。 ### 檢查用戶數據授權 ``` if(check_auth_node(1, 'cms.column', 55)){ //id為1的用戶,擁有欄目節點id為55的訪問權限 } else { // id為1的用戶,沒有欄目節點id為55的訪問權限 } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看