From f1da24671295507502268b000ce0f9734cb37e02 Mon Sep 17 00:00:00 2001 From: mtvpls Date: Wed, 22 Apr 2026 22:21:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=85=A8=E9=80=89=E5=92=8C=E4=B8=8D=E5=85=A8=E9=80=89?= =?UTF-8?q?=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/admin/page.tsx | 72 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 6 deletions(-) diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index 0eb5a4b..183c4ec 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -51,7 +51,10 @@ import { createPortal } from 'react-dom'; import { AdminConfig, AdminConfigResult } from '@/lib/admin.types'; import { getAuthInfoFromBrowserCookie } from '@/lib/auth'; -import { FEATURE_PERMISSION_OPTIONS } from '@/lib/feature-permissions'; +import { + ALL_FEATURE_PERMISSION_KEYS, + FEATURE_PERMISSION_OPTIONS, +} from '@/lib/feature-permissions'; import AnimeSubscriptionComponent from '@/components/AnimeSubscriptionComponent'; import CorrectDialog from '@/components/CorrectDialog'; @@ -119,6 +122,8 @@ const buttonStyles = { 'px-3 py-1.5 text-xs font-medium text-gray-600 dark:text-gray-400 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-700 rounded-md transition-colors', }; +const DEFAULT_GROUP_PERMISSIONS = [...ALL_FEATURE_PERMISSION_KEYS]; + // 通用弹窗组件 interface AlertModalProps { isOpen: boolean; @@ -506,7 +511,7 @@ const UserConfig = ({ config, role, refreshConfig, usersV2, userPage, userTotalP const [newUserGroup, setNewUserGroup] = useState({ name: '', enabledApis: [] as string[], - permissions: FEATURE_PERMISSION_OPTIONS.map((item) => item.key) as string[], + permissions: [...DEFAULT_GROUP_PERMISSIONS] as string[], }); const [editingUserGroup, setEditingUserGroup] = useState<{ name: string; @@ -608,7 +613,7 @@ const UserConfig = ({ config, role, refreshConfig, usersV2, userPage, userTotalP setNewUserGroup({ name: '', enabledApis: [], - permissions: FEATURE_PERMISSION_OPTIONS.map((item) => item.key), + permissions: [...DEFAULT_GROUP_PERMISSIONS], }); setShowAddUserGroupForm(false); } else if (action === 'edit') { @@ -1957,7 +1962,7 @@ const UserConfig = ({ config, role, refreshConfig, usersV2, userPage, userTotalP setNewUserGroup({ name: '', enabledApis: [], - permissions: FEATURE_PERMISSION_OPTIONS.map((item) => item.key), + permissions: [...DEFAULT_GROUP_PERMISSIONS], }); }} > @@ -1976,7 +1981,7 @@ const UserConfig = ({ config, role, refreshConfig, usersV2, userPage, userTotalP setNewUserGroup({ name: '', enabledApis: [], - permissions: FEATURE_PERMISSION_OPTIONS.map((item) => item.key), + permissions: [...DEFAULT_GROUP_PERMISSIONS], }); }} className='text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors' @@ -2056,6 +2061,32 @@ const UserConfig = ({ config, role, refreshConfig, usersV2, userPage, userTotalP ))} +
+ + +
{/* 可用视频源 */} @@ -2147,7 +2178,7 @@ const UserConfig = ({ config, role, refreshConfig, usersV2, userPage, userTotalP setNewUserGroup({ name: '', enabledApis: [], - permissions: FEATURE_PERMISSION_OPTIONS.map((item) => item.key), + permissions: [...DEFAULT_GROUP_PERMISSIONS], }); }} className={`px-6 py-2.5 text-sm font-medium ${buttonStyles.secondary}`} @@ -2357,6 +2388,35 @@ const UserConfig = ({ config, role, refreshConfig, usersV2, userPage, userTotalP ))} +
+ + +
{/* 操作按钮 */}