Move admin area to root subdomain
CI / quality (push) Waiting to run

This commit is contained in:
MOH
2026-03-12 00:15:12 +01:00
parent e7dab6f0ef
commit 87a597c872
50 changed files with 256 additions and 140 deletions
+12 -11
View File
@@ -5,6 +5,7 @@ import { revalidatePath } from "next/cache";
import { redirect } from "next/navigation";
import { isRedirectError } from "next/dist/client/components/redirect";
import { toInternalAdminPath } from "@/lib/admin-routing";
import { clearAdminSessionCookie, isAdminAuthenticated } from "@/lib/admin-auth";
import { countMediaUsageReferences, getMediaAssetById } from "@/lib/media";
import { createStandaloneMediaAsset, deleteMediaAssetAndFile } from "@/lib/media-service";
@@ -14,7 +15,7 @@ import { prisma } from "@/lib/prisma";
function ensureAdmin() {
if (!isAdminAuthenticated()) {
clearAdminSessionCookie();
redirect("/root");
redirect("/");
}
}
@@ -26,10 +27,10 @@ function withMessage(pathname: string, type: "success" | "error", message: strin
}
function revalidateMediaPages() {
revalidatePath("/root");
revalidatePath("/root/media");
revalidatePath("/root/portfolio");
revalidatePath("/root/portfolio/projects");
revalidatePath(toInternalAdminPath("/"));
revalidatePath(toInternalAdminPath("/media"));
revalidatePath(toInternalAdminPath("/portfolio"));
revalidatePath(toInternalAdminPath("/portfolio/projects"));
}
export async function createMediaAssetAction(formData: FormData) {
@@ -46,14 +47,14 @@ export async function createMediaAssetAction(formData: FormData) {
});
revalidateMediaPages();
redirect(withMessage("/root/media", "success", "Datei gespeichert."));
redirect(withMessage("/media", "success", "Datei gespeichert."));
} catch (error) {
if (isRedirectError(error)) {
throw error;
}
const message = error instanceof Error ? error.message : "Datei konnte nicht gespeichert werden.";
redirect(withMessage("/root/media", "error", message));
redirect(withMessage("/media", "error", message));
}
}
@@ -66,13 +67,13 @@ export async function deleteMediaAssetAction(formData: FormData) {
const asset = await getMediaAssetById(assetId);
if (!asset) {
redirect(withMessage("/root/media", "error", "Datei nicht gefunden."));
redirect(withMessage("/media", "error", "Datei nicht gefunden."));
}
const usageCount = await countMediaUsageReferences(asset.id);
if (usageCount > 0) {
redirect(withMessage("/root/media", "error", "Datei wird noch verwendet."));
redirect(withMessage("/media", "error", "Datei wird noch verwendet."));
}
await prisma.mediaAsset.delete({
@@ -89,13 +90,13 @@ export async function deleteMediaAssetAction(formData: FormData) {
}
revalidateMediaPages();
redirect(withMessage("/root/media", "success", "Datei geloescht."));
redirect(withMessage("/media", "success", "Datei geloescht."));
} catch (error) {
if (isRedirectError(error)) {
throw error;
}
const message = error instanceof Error ? error.message : "Datei konnte nicht geloescht werden.";
redirect(withMessage("/root/media", "error", message));
redirect(withMessage("/media", "error", message));
}
}
+2 -2
View File
@@ -22,14 +22,14 @@ const copy = {
export default async function RootMediaPage() {
if (!isAdminAuthenticated()) {
redirect("/root");
redirect("/");
}
async function logoutAction() {
"use server";
clearAdminSessionCookie();
redirect("/root");
redirect("/");
}
const mediaAssets = await getAdminMediaAssets();