mirror of
https://github.com/YuzuZensai/Minikura.git
synced 2026-09-13 18:59:25 +00:00
🐛 fix: align dashboard with secured APIs
This commit is contained in:
@@ -56,11 +56,11 @@ export default function CreateServerPage() {
|
||||
title="Server Configuration"
|
||||
description="Complete configuration for the itzg/minecraft-server workload."
|
||||
>
|
||||
<ServerForm
|
||||
onSubmit={handleSubmit}
|
||||
onCancel={() => router.push("/dashboard/servers")}
|
||||
submitLabel="Create Server"
|
||||
/>
|
||||
<ServerForm
|
||||
onSubmit={handleSubmit}
|
||||
onCancel={() => router.push("/dashboard/servers")}
|
||||
submitLabel="Create Server"
|
||||
/>
|
||||
</SectionCard>
|
||||
</PageShell>
|
||||
);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import type { NormalServer, UpdateServerRequest } from "@minikura/api";
|
||||
import type { NormalServer, ReverseProxyServer, UpdateServerRequest } from "@minikura/api";
|
||||
import { ArrowLeft } from "lucide-react";
|
||||
import { useParams, useRouter } from "next/navigation";
|
||||
import { useEffect, useState } from "react";
|
||||
@@ -19,6 +19,7 @@ export default function EditServerPage() {
|
||||
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [serverData, setServerData] = useState<NormalServer | null>(null);
|
||||
const [resourceKind, setResourceKind] = useState<"server" | "proxy">("server");
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -32,6 +33,7 @@ export default function EditServerPage() {
|
||||
const server = servers.find((s) => s.id === serverId);
|
||||
if (server) {
|
||||
setServerData(server);
|
||||
setResourceKind("server");
|
||||
setLoading(false);
|
||||
return;
|
||||
}
|
||||
@@ -39,10 +41,11 @@ export default function EditServerPage() {
|
||||
|
||||
const proxyResponse = await getReverseProxyApi().get();
|
||||
if (proxyResponse.data) {
|
||||
const proxies = proxyResponse.data as unknown as NormalServer[];
|
||||
const proxies = proxyResponse.data as unknown as ReverseProxyServer[];
|
||||
const proxy = proxies.find((p) => p.id === serverId);
|
||||
if (proxy) {
|
||||
setServerData(proxy);
|
||||
setServerData(proxy as unknown as NormalServer);
|
||||
setResourceKind("proxy");
|
||||
setLoading(false);
|
||||
return;
|
||||
}
|
||||
@@ -66,7 +69,18 @@ export default function EditServerPage() {
|
||||
|
||||
const payload: UpdateServerRequest = toCommonServerRequestFields(data);
|
||||
|
||||
const response = await api.api.servers({ id: serverId }).patch(payload);
|
||||
const response =
|
||||
resourceKind === "server"
|
||||
? await api.api.servers({ id: serverId }).patch(payload)
|
||||
: await getReverseProxyApi()({ id: serverId }).patch({
|
||||
description: payload.description,
|
||||
listen_port: payload.listen_port,
|
||||
service_type: payload.service_type,
|
||||
node_port: payload.node_port,
|
||||
memory: payload.memory,
|
||||
cpu_request: payload.cpu_request,
|
||||
cpu_limit: payload.cpu_limit,
|
||||
});
|
||||
|
||||
if (response.error) {
|
||||
const errorMsg =
|
||||
@@ -95,10 +109,7 @@ export default function EditServerPage() {
|
||||
tone="error"
|
||||
className="min-h-[50vh]"
|
||||
action={
|
||||
<Button
|
||||
variant="outline"
|
||||
onClick={() => router.push("/dashboard/servers")}
|
||||
>
|
||||
<Button variant="outline" onClick={() => router.push("/dashboard/servers")}>
|
||||
<ArrowLeft className="size-4" />
|
||||
Back to Servers
|
||||
</Button>
|
||||
@@ -127,12 +138,12 @@ export default function EditServerPage() {
|
||||
title="Server Configuration"
|
||||
description="Modify settings for your Minecraft server"
|
||||
>
|
||||
<ServerForm
|
||||
initialData={initialData}
|
||||
onSubmit={handleSubmit}
|
||||
onCancel={() => router.push("/dashboard/servers")}
|
||||
submitLabel="Save Changes"
|
||||
/>
|
||||
<ServerForm
|
||||
initialData={initialData}
|
||||
onSubmit={handleSubmit}
|
||||
onCancel={() => router.push("/dashboard/servers")}
|
||||
submitLabel="Save Changes"
|
||||
/>
|
||||
</SectionCard>
|
||||
</PageShell>
|
||||
);
|
||||
|
||||
@@ -9,9 +9,12 @@ import { ResourceSection } from "@/components/section-card";
|
||||
import { ServerTable } from "@/components/servers/server-table";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { useServerList } from "@/hooks/use-server-list";
|
||||
import { useSession } from "@/lib/auth-client";
|
||||
|
||||
export default function ServersPage() {
|
||||
const router = useRouter();
|
||||
const { data: session } = useSession();
|
||||
const isAdmin = session?.user.role === "admin";
|
||||
const { normalServers, reverseProxies, loading, error, deleteServer } = useServerList();
|
||||
const [deleteTarget, setDeleteTarget] = useState<{
|
||||
id: string;
|
||||
@@ -34,10 +37,12 @@ export default function ServersPage() {
|
||||
title="Servers"
|
||||
description="Provision Minecraft runtimes and route traffic through edge proxies."
|
||||
actions={
|
||||
<Button size="lg" onClick={() => router.push("/dashboard/servers/create")}>
|
||||
<Plus className="size-4" />
|
||||
Create Server
|
||||
</Button>
|
||||
isAdmin ? (
|
||||
<Button size="lg" onClick={() => router.push("/dashboard/servers/create")}>
|
||||
<Plus className="size-4" />
|
||||
Create Server
|
||||
</Button>
|
||||
) : undefined
|
||||
}
|
||||
/>
|
||||
|
||||
@@ -59,8 +64,8 @@ export default function ServersPage() {
|
||||
<ServerTable
|
||||
type="normal"
|
||||
servers={normalServers}
|
||||
onEdit={(id) => router.push(`/dashboard/servers/edit/${id}`)}
|
||||
onDelete={(id) => setDeleteTarget({ id, type: "normal" })}
|
||||
onEdit={isAdmin ? (id) => router.push(`/dashboard/servers/edit/${id}`) : undefined}
|
||||
onDelete={isAdmin ? (id) => setDeleteTarget({ id, type: "normal" }) : undefined}
|
||||
/>
|
||||
</ResourceSection>
|
||||
|
||||
@@ -76,8 +81,8 @@ export default function ServersPage() {
|
||||
<ServerTable
|
||||
type="proxy"
|
||||
servers={reverseProxies}
|
||||
onEdit={(id) => router.push(`/dashboard/servers/edit/${id}`)}
|
||||
onDelete={(id) => setDeleteTarget({ id, type: "proxy" })}
|
||||
onEdit={isAdmin ? (id) => router.push(`/dashboard/servers/edit/${id}`) : undefined}
|
||||
onDelete={isAdmin ? (id) => setDeleteTarget({ id, type: "proxy" }) : undefined}
|
||||
/>
|
||||
</ResourceSection>
|
||||
</>
|
||||
|
||||
Reference in New Issue
Block a user