权限控制增加全选和不全选按钮

This commit is contained in:
mtvpls
2026-04-22 22:21:17 +08:00
parent 0916e4ff08
commit f1da246712
+66 -6
View File
@@ -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
</label>
))}
</div>
<div className='mt-4 flex space-x-2'>
<button
type='button'
onClick={() =>
setNewUserGroup((prev) => ({
...prev,
permissions: [],
}))
}
className={buttonStyles.quickAction}
>
</button>
<button
type='button'
onClick={() =>
setNewUserGroup((prev) => ({
...prev,
permissions: [...DEFAULT_GROUP_PERMISSIONS],
}))
}
className={buttonStyles.quickAction}
>
</button>
</div>
</div>
{/* 可用视频源 */}
@@ -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
</label>
))}
</div>
<div className='mt-4 flex space-x-2'>
<button
type='button'
onClick={() =>
setEditingUserGroup((prev) =>
prev ? { ...prev, permissions: [] } : null
)
}
className={buttonStyles.quickAction}
>
</button>
<button
type='button'
onClick={() =>
setEditingUserGroup((prev) =>
prev
? {
...prev,
permissions: [...DEFAULT_GROUP_PERMISSIONS],
}
: null
)
}
className={buttonStyles.quickAction}
>
</button>
</div>
</div>
{/* 操作按钮 */}