mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 22:26:38 +08:00
[重构] 清除旧兼容层
This commit is contained in:
@@ -5,7 +5,6 @@ import (
|
||||
"atsflare/controller"
|
||||
"atsflare/middleware"
|
||||
"embed"
|
||||
"fmt"
|
||||
"github.com/gin-contrib/static"
|
||||
"github.com/gin-gonic/gin"
|
||||
"io/fs"
|
||||
@@ -23,7 +22,6 @@ func setWebRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) {
|
||||
router.Use(middleware.GlobalWebRateLimit())
|
||||
fileDownloadRoute := router.Group("/")
|
||||
fileDownloadRoute.GET("/upload/:file", middleware.DownloadRateLimit(), controller.DownloadFile)
|
||||
registerLegacyWebRedirects(router)
|
||||
router.Use(middleware.Cache())
|
||||
router.Use(static.Serve("/", common.EmbedFolder(buildFS, "web/build")))
|
||||
router.NoRoute(func(c *gin.Context) {
|
||||
@@ -40,35 +38,6 @@ func setWebRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) {
|
||||
})
|
||||
}
|
||||
|
||||
func registerLegacyWebRedirects(router *gin.Engine) {
|
||||
legacyRoutes := map[string]string{
|
||||
"/proxy-route": "/proxy-routes",
|
||||
"/config-version": "/config-versions",
|
||||
"/node": "/nodes",
|
||||
"/apply-log": "/apply-logs",
|
||||
"/managed-domain": "/managed-domains",
|
||||
"/tls-certificate": "/tls-certificates",
|
||||
"/file": "/files",
|
||||
"/user": "/users",
|
||||
"/user/add": "/users?mode=create",
|
||||
"/user/edit": "/users",
|
||||
"/setting": "/settings",
|
||||
}
|
||||
|
||||
for source, target := range legacyRoutes {
|
||||
router.GET(source, func(target string) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
c.Redirect(http.StatusFound, target)
|
||||
}
|
||||
}(target))
|
||||
}
|
||||
|
||||
router.GET("/user/edit/:id", func(c *gin.Context) {
|
||||
target := fmt.Sprintf("/users?edit=%s", c.Param("id"))
|
||||
c.Redirect(http.StatusFound, target)
|
||||
})
|
||||
}
|
||||
|
||||
func serveExportedPage(c *gin.Context, buildFS fs.FS) bool {
|
||||
requestPath := strings.Trim(c.Request.URL.Path, "/")
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyApplyLogRoute() {
|
||||
return <LegacyRouteRedirect href='/apply-logs' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyConfigVersionPage() {
|
||||
return <LegacyRouteRedirect href='/config-versions' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyFilePage() {
|
||||
return <LegacyRouteRedirect href='/files' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyManagedDomainRoute() {
|
||||
return <LegacyRouteRedirect href='/managed-domains' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyNodePage() {
|
||||
return <LegacyRouteRedirect href='/nodes' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyProxyRoutePage() {
|
||||
return <LegacyRouteRedirect href='/proxy-routes' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacySettingPage() {
|
||||
return <LegacyRouteRedirect href='/settings' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyTlsCertificateRoute() {
|
||||
return <LegacyRouteRedirect href='/tls-certificates' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyUserAddPage() {
|
||||
return <LegacyRouteRedirect href='/users?mode=create' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyUserEditPage() {
|
||||
return <LegacyRouteRedirect href='/users' />;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
import { LegacyRouteRedirect } from '@/features/shared/components/legacy-route-redirect';
|
||||
|
||||
export default function LegacyUserPage() {
|
||||
return <LegacyRouteRedirect href='/users' />;
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
'use client';
|
||||
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
import { LoadingState } from '@/components/feedback/loading-state';
|
||||
|
||||
interface LegacyRouteRedirectProps {
|
||||
href: string;
|
||||
}
|
||||
|
||||
export function LegacyRouteRedirect({ href }: LegacyRouteRedirectProps) {
|
||||
const router = useRouter();
|
||||
|
||||
useEffect(() => {
|
||||
router.replace(href);
|
||||
}, [href, router]);
|
||||
|
||||
return (
|
||||
<main className='flex min-h-screen items-center justify-center px-4 py-8'>
|
||||
<LoadingState className='w-full max-w-md' />
|
||||
</main>
|
||||
);
|
||||
}
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
import { zodResolver } from '@hookform/resolvers/zod';
|
||||
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
||||
import { useSearchParams } from 'next/navigation';
|
||||
import { useEffect, useMemo, useState } from 'react';
|
||||
import { useForm } from 'react-hook-form';
|
||||
import { z } from 'zod';
|
||||
@@ -95,7 +94,6 @@ function toPayload(values: UserFormValues): UserMutationPayload {
|
||||
|
||||
export function UsersPage() {
|
||||
const queryClient = useQueryClient();
|
||||
const searchParams = useSearchParams();
|
||||
const { user: currentUser } = useAuth();
|
||||
const [page, setPage] = useState(0);
|
||||
const [searchInput, setSearchInput] = useState('');
|
||||
@@ -132,32 +130,12 @@ export function UsersPage() {
|
||||
useEffect(() => {
|
||||
if (editingUserQuery.data) {
|
||||
form.reset({
|
||||
username: editingUserQuery.data.username,
|
||||
display_name: editingUserQuery.data.display_name || '',
|
||||
password: '',
|
||||
});
|
||||
username: editingUserQuery.data.username,
|
||||
display_name: editingUserQuery.data.display_name || '',
|
||||
password: '',
|
||||
});
|
||||
}
|
||||
}, [editingUserQuery.data, form]);
|
||||
|
||||
useEffect(() => {
|
||||
const editParam = searchParams?.get('edit');
|
||||
const modeParam = searchParams?.get('mode');
|
||||
|
||||
if (editParam) {
|
||||
const parsedUserId = Number.parseInt(editParam, 10);
|
||||
if (!Number.isNaN(parsedUserId) && parsedUserId > 0) {
|
||||
setFeedback(null);
|
||||
setEditingUserId(parsedUserId);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (modeParam === 'create') {
|
||||
setFeedback(null);
|
||||
setEditingUserId(null);
|
||||
form.reset(defaultValues);
|
||||
}
|
||||
}, [form, searchParams]);
|
||||
|
||||
const saveMutation = useMutation({
|
||||
mutationFn: async (values: UserFormValues) => {
|
||||
|
||||
Reference in New Issue
Block a user