Files
ayristech_new/app/[lang]/admin/page.tsx
T
2026-05-30 18:23:21 +03:00

100 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { getDictionary } from "@/get-dictionary";
import type { Locale } from "@/i18n-config";
import AdminClient from "@/components/AdminClient";
import { getProjects, getBlogPosts, getAdminSession, getPartners } from "@/app/actions";
import { redirect } from "next/navigation";
export async function generateStaticParams() {
return [{ lang: "tr" }, { lang: "en" }];
}
export async function generateMetadata() {
return {
title: "Yönetim Paneli | Ayris Tech",
description: "Ayris Tech sistem, proje ve site ayarları yönetim merkezi.",
};
}
export default async function AdminPage({ params }: { params: Promise<{ lang: Locale }> }) {
const { lang } = await params;
// Guard dashboard route against unauthenticated users
const session = await getAdminSession();
if (!session) {
redirect(`/${lang}/admin/login`);
}
const dict = await getDictionary(lang);
const initialDbProjects = await getProjects();
const initialDbBlogPosts = await getBlogPosts();
const initialDbPartners = await getPartners();
// Convert DB format to expected BlogPost format
const initialBlogPosts = initialDbBlogPosts.map((dbPost) => ({
id: dbPost.id,
slug: dbPost.slug,
date: dbPost.date,
author: dbPost.author,
authorRole: dbPost.authorRole,
image: dbPost.image,
tr: {
title: dbPost.trTitle,
excerpt: dbPost.trExcerpt,
readingTime: dbPost.trReadingTime,
category: dbPost.trCategory,
tags: dbPost.trTags,
content: dbPost.trContent,
},
en: {
title: dbPost.enTitle,
excerpt: dbPost.enExcerpt,
readingTime: dbPost.enReadingTime,
category: dbPost.enCategory,
tags: dbPost.enTags,
content: dbPost.enContent,
}
}));
// Convert DB Project format to standard ProjectData format (mapping fields properly)
const initialProjects = initialDbProjects.map((p) => ({
id: p.id,
num: p.num,
slug: p.slug,
title: p.title,
tag: p.tag,
desc: p.desc,
spec: p.spec,
year: p.year,
client: p.client,
duration: p.duration,
tech: p.tech,
challenge: p.challenge,
solution: p.solution,
results: p.results,
image: p.image,
gallery: p.gallery,
website: p.website,
}));
// Map database Partners
const initialPartners = initialDbPartners.map((p) => ({
id: p.id,
name: p.name,
tag: p.tag,
mono: p.mono,
year: p.year,
desc: p.desc,
}));
return (
<AdminClient
lang={lang}
dict={dict}
initialProjects={initialProjects}
initialBlogPosts={initialBlogPosts}
initialPartners={initialPartners}
/>
);
}