From 9c4ff466a4c949ddf1b6b7c13c6392d7ed6c9c96 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Wed, 20 Nov 2024 16:17:30 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=96=B0=E5=A2=9E=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=89=93=E5=8C=85=E4=B8=8B=E8=BD=BD=E6=9D=83=E9=99=90=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/FileController.php | 22 +++++ app/Http/Controllers/Api/SystemController.php | 40 ++++++++ app/Models/Setting.php | 10 +- .../setting/components/SystemFileSetting.vue | 97 +++++++++++++++++++ .../setting/components/SystemSetting.vue | 1 + .../assets/js/pages/manage/setting/system.vue | 6 +- 6 files changed, 173 insertions(+), 3 deletions(-) create mode 100644 resources/assets/js/pages/manage/setting/components/SystemFileSetting.vue diff --git a/app/Http/Controllers/Api/FileController.php b/app/Http/Controllers/Api/FileController.php index e427e4d1c..b0537542a 100755 --- a/app/Http/Controllers/Api/FileController.php +++ b/app/Http/Controllers/Api/FileController.php @@ -1014,6 +1014,28 @@ class FileController extends AbstractController } $user = User::auth(); + if ($user->isTemp()) { + return Base::retError('无法打包下载'); + } + $setting = Base::setting('fileSetting'); + switch ($setting['permission_pack_type']) { + case 'admin': + if (!$user->isAdmin()) { + return Base::retError('此功能仅管理员可用'); + } + break; + case 'appointAllow': + if (!in_array($user->userid, $setting['permission_pack_userids'])) { + return Base::retError('此功能仅指定用户可用'); + } + break; + case 'appointProhibit': + if (in_array($user->userid, $setting['permission_pack_userids'])) { + return Base::retError('此功能已禁止使用'); + } + break; + } + $ids = Request::input('ids'); $fileName = Request::input('name'); $fileName = preg_replace("/[\/\\\:\*\?\"\<\>\|]/", "", $fileName); diff --git a/app/Http/Controllers/Api/SystemController.php b/app/Http/Controllers/Api/SystemController.php index 9e75afb8a..dc922381b 100755 --- a/app/Http/Controllers/Api/SystemController.php +++ b/app/Http/Controllers/Api/SystemController.php @@ -605,6 +605,46 @@ class SystemController extends AbstractController return Base::retSuccess('success', $setting ?: json_decode('{}')); } + /** + * @api {get} api/system/setting/file 07. 文件设置(限管理员) + * + * @apiVersion 1.0.0 + * @apiGroup system + * @apiName setting__file + * + * @apiParam {String} type + * - get: 获取(默认) + * - save: 保存设置(参数:['permission_pack_type', 'permission_pack_userids']) + * @apiSuccess {Number} ret 返回状态码(1正确、0错误) + * @apiSuccess {String} msg 返回信息(错误描述) + * @apiSuccess {Object} data 返回数据 + */ + public function setting__file() + { + User::auth('admin'); + // + $type = trim(Request::input('type')); + if ($type == 'save') { + if (env("SYSTEM_SETTING") == 'disabled') { + return Base::retError('当前环境禁止修改'); + } + $all = Base::newTrim(Request::input()); + foreach ($all as $key => $value) { + if (!in_array($key, [ + 'permission_pack_type', + 'permission_pack_userids' + ])) { + unset($all[$key]); + } + } + $setting = Base::setting('fileSetting', Base::newTrim($all)); + } else { + $setting = Base::setting('fileSetting'); + } + // + return Base::retSuccess('success', $setting ?: json_decode('{}')); + } + /** * @api {get} api/system/demo 08. 获取演示帐号 * diff --git a/app/Models/Setting.php b/app/Models/Setting.php index 0eb9264b7..1fad0529f 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -43,8 +43,14 @@ class Setting extends AbstractModel return $value; } $value = Base::json2array($value); - if ($this->name === 'system') { - $value['system_alias'] = $value['system_alias'] ?: env('APP_NAME'); + switch ($this->name) { + case 'system': + $value['system_alias'] = $value['system_alias'] ?: env('APP_NAME'); + break; + case 'fileSetting': + $value['permission_pack_type'] = $value['permission_pack_type'] ?: 'all'; + $value['permission_pack_userids'] = is_array($value['permission_pack_userids']) ? $value['permission_pack_userids'] : []; + break; } return $value; } diff --git a/resources/assets/js/pages/manage/setting/components/SystemFileSetting.vue b/resources/assets/js/pages/manage/setting/components/SystemFileSetting.vue new file mode 100644 index 000000000..4bcde4af7 --- /dev/null +++ b/resources/assets/js/pages/manage/setting/components/SystemFileSetting.vue @@ -0,0 +1,97 @@ + + + diff --git a/resources/assets/js/pages/manage/setting/components/SystemSetting.vue b/resources/assets/js/pages/manage/setting/components/SystemSetting.vue index 3a3883b1b..25efe6625 100644 --- a/resources/assets/js/pages/manage/setting/components/SystemSetting.vue +++ b/resources/assets/js/pages/manage/setting/components/SystemSetting.vue @@ -41,6 +41,7 @@
  • {{$L('禁止发起会话。')}}
  • {{$L('禁止创建群聊。')}}
  • {{$L('禁止拨打电话。')}}
  • +
  • {{$L('禁止打包下载文件。')}}
  • diff --git a/resources/assets/js/pages/manage/setting/system.vue b/resources/assets/js/pages/manage/setting/system.vue index edc440798..0fffb108c 100644 --- a/resources/assets/js/pages/manage/setting/system.vue +++ b/resources/assets/js/pages/manage/setting/system.vue @@ -10,6 +10,9 @@ + + + @@ -18,9 +21,10 @@ import SystemSetting from "./components/SystemSetting"; import SystemTaskPriority from "./components/SystemTaskPriority"; import SystemColumnTemplate from "./components/SystemColumnTemplate"; +import SystemFileSetting from "./components/SystemFileSetting"; export default { - components: {SystemColumnTemplate, SystemTaskPriority, SystemSetting}, + components: {SystemColumnTemplate, SystemTaskPriority, SystemSetting, SystemFileSetting}, data() { return { tabAction: 'setting',