- 我的文件
+ 文件管理
管理您上传的所有文件,支持下载和批量操作
diff --git a/frontend/components/common/settings/security.tsx b/frontend/components/common/settings/security.tsx
index c1f3edfe..d54b4dd9 100644
--- a/frontend/components/common/settings/security.tsx
+++ b/frontend/components/common/settings/security.tsx
@@ -2,22 +2,14 @@
import {useEffect, useMemo, useState} from "react"
import {useMutation, useQuery, useQueryClient} from "@tanstack/react-query"
-import {Fingerprint, Globe, Loader2, Lock, Pencil, Plus, Settings, ShieldCheck, Trash2, UserPlus} from "lucide-react"
-import Link from "next/link"
+import {Fingerprint, Globe, Loader2, Lock, Pencil, Plus, Settings, Trash2, UserPlus} from "lucide-react"
import {useRouter} from "next/navigation"
import {motion} from "motion/react"
import {Button} from "@/components/ui/button"
import {Card, CardContent, CardDescription, CardHeader, CardTitle} from "@/components/ui/card"
import {Switch} from "@/components/ui/switch"
-import {
- Breadcrumb,
- BreadcrumbItem,
- BreadcrumbLink,
- BreadcrumbList,
- BreadcrumbPage,
- BreadcrumbSeparator
-} from "@/components/ui/breadcrumb"
+import {Tabs, TabsContent, TabsList, TabsTrigger} from "@/components/ui/tabs"
import {useAuth} from "@/components/providers/auth-provider"
import {AuthSourceModal} from "@/components/common/settings/auth-source-modal"
import {AdminService} from "@/lib/services"
@@ -163,196 +155,194 @@ export function SecurityMain() {
transition={{ duration: 0.35, ease: "easeOut" }}
className="py-6 space-y-6 max-w-4xl mx-auto px-4"
>
-
-
-
-
-
- 设置
-
-
-
-
- 安全设置
-
-
-
-
+
+
+
+ 系统安全设置
+
+
+ 运营设置
+
+
+ 系统设置
+
+
+ 其他设置
+
+
+ 系统信息
+
+
-
-
-
-
-
-
-
系统安全设置
-
管理系统安全控制及身份验证源
-
-
-
-
-
- {/* 系统登录与注册控制 */}
-
-
-
-
-
-
-
- 系统安全与注册控制
- 配置系统的登录限制与用户自主注册权限
-
-
-
-
-
- {SECURITY_KEYS.map((item) => {
- const config = configs[item.key]
- const checked = config ? config.value === "true" : false
- const Icon = item.icon
- return (
-
-
-
- {Icon && }
- {item.title}
-
-
{item.description}
-
-
handleToggle(item.key, value)}
- />
+
+
+ {/* 系统登录与注册控制 */}
+
+
+
-
-
-
- {/* 认证源配置管理 */}
-
-
-
-
-
-
-
- 认证源管理
- 添加、修改并启用系统自定义的 OIDC 认证源
-
-
-
-
-
- {authSourcesQuery.isPending ? (
-
-
-
- ) : (authSourcesQuery.data ?? []).length > 0 ? (
- (authSourcesQuery.data ?? []).map((source) => (
-
-
-
- {source.display_name || source.name}
-
- {source.is_active ? "已启用" : "已禁用"}
-
-
-
- 标识符: {source.name} · 类型: {source.type.toUpperCase()}
-
-
-
-
- {source.client_secret_configured ? "Secret 已配置" : "Secret 未配置"}
-
-
-
-
toggleSourceMutation.mutate(source)}
- />
-
-
-
+
+ 系统安全与注册控制
+ 配置系统的登录限制与用户自主注册权限
+
+
+
+
+
+ {SECURITY_KEYS.map((item) => {
+ const config = configs[item.key]
+ const checked = config ? config.value === "true" : false
+ const Icon = item.icon
+ return (
+
+
+
+ {Icon && }
+ {item.title}
+
+
{item.description}
+
+
handleToggle(item.key, value)}
+ />
+
+ )
+ })}
+
+
+
+
+ {/* 认证源配置管理 */}
+
+
+
+
+
+
+
+ 认证源管理
+ 添加、修改并启用系统自定义的 OIDC 认证源
- ))
- ) : (
-
-
暂无配置的认证源,点击上方按钮新增
-
- )}
-
-
-
+
+
+ {authSourcesQuery.isPending ? (
+
+
+
+ ) : (authSourcesQuery.data ?? []).length > 0 ? (
+ (authSourcesQuery.data ?? []).map((source) => (
+
+
+
+ {source.display_name || source.name}
+
+ {source.is_active ? "已启用" : "已禁用"}
+
+
+
+ 标识符: {source.name} · 类型: {source.type.toUpperCase()}
+
+
+
+
+ {source.client_secret_configured ? "Secret 已配置" : "Secret 未配置"}
+
+
+
+
toggleSourceMutation.mutate(source)}
+ />
+
+
+
+
+
+ ))
+ ) : (
+
+
暂无配置的认证源,点击上方按钮新增
+
+
+ )}
+
+
+
+
+
+
+
+
+
)
}
-
diff --git a/frontend/components/home/footer-section.tsx b/frontend/components/home/footer-section.tsx
index 3f5fc229..61767c0c 100644
--- a/frontend/components/home/footer-section.tsx
+++ b/frontend/components/home/footer-section.tsx
@@ -1,7 +1,7 @@
import * as React from "react";
-import { cn } from "@/lib/utils";
+import {cn} from "@/lib/utils";
import Link from "next/link";
-import { Github, LucideIcon } from "lucide-react";
+import {Github, LucideIcon} from "lucide-react";
export interface FooterSectionProps {
className?: string;
@@ -36,7 +36,7 @@ export const FooterSection = React.memo(function FooterSection({ className }: Fo
产品
diff --git a/frontend/components/layout/sidebar.tsx b/frontend/components/layout/sidebar.tsx
index 8543699e..c3a3340f 100644
--- a/frontend/components/layout/sidebar.tsx
+++ b/frontend/components/layout/sidebar.tsx
@@ -67,10 +67,8 @@ const data = {
{ title: "首页", url: "/home", icon: Home },
{ title: "文件管理", url: "/settings/files", icon: FolderOpen },
],
- systemSettings: [
- { title: "系统设置", url: "/settings/security", icon: Settings },
- ],
admin: [
+ { title: "系统设置", url: "/admin/settings", icon: Settings },
{ title: "系统配置", url: "/admin/system", icon: ShieldCheck },
{ title: "用户管理", url: "/admin/users", icon: UserRound },
{ title: "任务管理", url: "/admin/tasks", icon: Layers },
@@ -283,32 +281,6 @@ export function AppSidebar({ ...props }: React.ComponentProps
) {
- {user?.is_admin && (
-
-
- 设置
-
-
-
- {data.systemSettings.map((item) => (
-
-
-
- {item.icon && }
- {item.title}
-
-
-
- ))}
-
-
-
- )}
-
{user?.is_admin && (
@@ -320,7 +292,7 @@ export function AppSidebar({ ...props }: React.ComponentProps) {
diff --git a/frontend/lib/utils/search-data.ts b/frontend/lib/utils/search-data.ts
index 21984e8c..e2efb24d 100644
--- a/frontend/lib/utils/search-data.ts
+++ b/frontend/lib/utils/search-data.ts
@@ -98,16 +98,15 @@ export const searchData: SearchItem[] = [
category: 'setting',
keywords: ['appearance', '外观', '主题', 'theme', 'dark', 'light'],
},
- {
- id: 'settings-security',
- title: '安全设置',
- description: '管理您的账户安全设置及安全密钥',
- url: '/settings',
- category: 'setting',
- keywords: ['settings', '安全', 'security', 'privacy', 'keys'],
- },
-
// ==================== 管理员 ====================
+ {
+ id: 'admin-settings',
+ title: '系统设置',
+ description: '管理系统登录注册与认证源配置 (管理员专属)',
+ url: '/admin/settings',
+ category: 'admin',
+ keywords: ['admin', '管理员', '系统设置', '安全', 'security', 'oidc', 'login'],
+ },
{
id: 'admin-system',
title: '系统配置',