219 lines
9.2 KiB
TypeScript
219 lines
9.2 KiB
TypeScript
|
|
import type { Metadata } from "next";
|
|||
|
|
import { getTranslations } from "next-intl/server";
|
|||
|
|
import { Navbar } from "@/components/layout/navbar";
|
|||
|
|
import { Footer } from "@/components/layout/footer";
|
|||
|
|
import { Shield } from "lucide-react";
|
|||
|
|
|
|||
|
|
export async function generateMetadata({
|
|||
|
|
params,
|
|||
|
|
}: {
|
|||
|
|
params: { locale: string };
|
|||
|
|
}): Promise<Metadata> {
|
|||
|
|
const { locale } = await Promise.resolve(params);
|
|||
|
|
const t = await getTranslations({ locale, namespace: "meta" });
|
|||
|
|
return { title: t("privacyTitle") };
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const fa = {
|
|||
|
|
badge: "حقوقی",
|
|||
|
|
title: "سیاست حریم خصوصی",
|
|||
|
|
updated: "آخرین بهروزرسانی: خرداد ۱۴۰۴",
|
|||
|
|
sections: [
|
|||
|
|
{
|
|||
|
|
h: "۱. مقدمه",
|
|||
|
|
body: `میزی («ما»، «شرکت») اهمیت حریم خصوصی کاربران خود را بهخوبی درک میکند. این سیاست توضیح میدهد چه اطلاعاتی جمعآوری میکنیم، چگونه از آنها استفاده میکنیم و چه حقوقی دارید.
|
|||
|
|
|
|||
|
|
با استفاده از خدمات میزی، با شرایط این سیاست موافقت میکنید.`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "۲. اطلاعاتی که جمعآوری میکنیم",
|
|||
|
|
body: `الف) اطلاعاتی که شما ارائه میدهید:
|
|||
|
|
• نام و نام خانوادگی
|
|||
|
|
• شماره موبایل (برای احراز هویت OTP)
|
|||
|
|
• نام کسبوکار، آدرس و اطلاعات شعب
|
|||
|
|
• اطلاعات منو و قیمتگذاری
|
|||
|
|
|
|||
|
|
ب) اطلاعاتی که بهطور خودکار جمعآوری میشود:
|
|||
|
|
• دادههای استفاده از سرویس (سفارشها، تراکنشها)
|
|||
|
|
• آدرس IP و اطلاعات دستگاه
|
|||
|
|
• کوکیهای ضروری برای عملکرد سرویس`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "۳. نحوه استفاده از اطلاعات",
|
|||
|
|
body: `اطلاعات شما برای موارد زیر استفاده میشود:
|
|||
|
|
• ارائه، نگهداری و بهبود خدمات میزی
|
|||
|
|
• احراز هویت و امنیت حساب
|
|||
|
|
• پردازش سفارشها و تراکنشهای مالی
|
|||
|
|
• ارسال اطلاعیههای سرویس و بهروزرسانیها
|
|||
|
|
• پشتیبانی فنی و رفع مشکلات
|
|||
|
|
• تولید گزارشهای آماری کلی (بدون شناسایی هویت)`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "۴. ذخیرهسازی و امنیت داده",
|
|||
|
|
body: `تمام دادههای شما روی سرورهای داخل ایران نگهداری میشوند. ما از موارد زیر برای حفاظت از اطلاعات استفاده میکنیم:
|
|||
|
|
• رمزگذاری TLS 1.3 برای تمام ارتباطات
|
|||
|
|
• رمزگذاری دادههای حساس در سطح پایگاه داده
|
|||
|
|
• پشتیبانگیری روزانه خودکار
|
|||
|
|
• کنترل دسترسی مبتنی بر نقش (RBAC)
|
|||
|
|
• مانیتورینگ و هشدار امنیتی ۲۴/۷`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "۵. اشتراکگذاری اطلاعات",
|
|||
|
|
body: `اطلاعات شما را به اشخاص ثالث نمیفروشیم. ممکن است اطلاعات را در موارد زیر به اشتراک بگذاریم:
|
|||
|
|
• درگاههای پرداخت (زرینپال و غیره) — فقط اطلاعات تراکنش ضروری
|
|||
|
|
• ارائهدهندگان پیامک — فقط شماره موبایل و متن OTP
|
|||
|
|
• الزامات قانونی — در صورت دستور مراجع قضایی
|
|||
|
|
|
|||
|
|
در تمام موارد، حداقل اطلاعات ضروری به اشتراک گذاشته میشود.`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "۶. حقوق شما",
|
|||
|
|
body: `شما حق دارید:
|
|||
|
|
• به اطلاعات شخصیتان دسترسی داشته باشید
|
|||
|
|
• اطلاعات نادرست را اصلاح کنید
|
|||
|
|
• حذف حساب و دادههای مرتبط را درخواست دهید
|
|||
|
|
• خروجی دادههایتان را دریافت کنید
|
|||
|
|
• از پردازش اطلاعات برای اهداف بازاریابی انصراف دهید
|
|||
|
|
|
|||
|
|
برای اعمال هر یک از این حقوق، با ما به آدرس privacy@meezi.ir تماس بگیرید.`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "۷. کوکیها",
|
|||
|
|
body: `میزی از کوکیهای ضروری برای عملکرد سرویس (احراز هویت، نشست) استفاده میکند. کوکیهای تبلیغاتی یا ردیابی شخص ثالث استفاده نمیشوند.`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "۸. تغییرات در این سیاست",
|
|||
|
|
body: `در صورت تغییر این سیاست، از طریق داشبورد یا ایمیل اطلاعرسانی خواهیم کرد. ادامه استفاده از سرویس پس از اطلاعرسانی، به منزله پذیرش تغییرات است.`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "۹. تماس با ما",
|
|||
|
|
body: `برای هرگونه سوال درباره حریم خصوصی:
|
|||
|
|
ایمیل: privacy@meezi.ir
|
|||
|
|
آدرس: تهران، ایران`,
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const en = {
|
|||
|
|
badge: "Legal",
|
|||
|
|
title: "Privacy Policy",
|
|||
|
|
updated: "Last updated: June 2025",
|
|||
|
|
sections: [
|
|||
|
|
{
|
|||
|
|
h: "1. Introduction",
|
|||
|
|
body: `Meezi ("we", "company") takes user privacy seriously. This policy explains what information we collect, how we use it, and what rights you have.
|
|||
|
|
|
|||
|
|
By using Meezi's services, you agree to the terms of this policy.`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "2. Information We Collect",
|
|||
|
|
body: `a) Information you provide:
|
|||
|
|
• Full name
|
|||
|
|
• Mobile number (for OTP authentication)
|
|||
|
|
• Business name, address, and branch information
|
|||
|
|
• Menu items and pricing
|
|||
|
|
|
|||
|
|
b) Automatically collected information:
|
|||
|
|
• Service usage data (orders, transactions)
|
|||
|
|
• IP address and device information
|
|||
|
|
• Essential cookies for service functionality`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "3. How We Use Your Information",
|
|||
|
|
body: `Your information is used to:
|
|||
|
|
• Provide, maintain, and improve Meezi services
|
|||
|
|
• Authenticate and secure your account
|
|||
|
|
• Process orders and financial transactions
|
|||
|
|
• Send service notifications and updates
|
|||
|
|
• Technical support and issue resolution
|
|||
|
|
• Generate aggregate statistical reports (non-identifying)`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "4. Data Storage & Security",
|
|||
|
|
body: `All your data is stored on servers inside Iran. We protect your information with:
|
|||
|
|
• TLS 1.3 encryption for all communications
|
|||
|
|
• Encryption of sensitive data at the database level
|
|||
|
|
• Automatic daily backups
|
|||
|
|
• Role-based access control (RBAC)
|
|||
|
|
• 24/7 security monitoring and alerting`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "5. Information Sharing",
|
|||
|
|
body: `We do not sell your information to third parties. We may share information in these cases:
|
|||
|
|
• Payment gateways (ZarinPal, etc.) — only necessary transaction data
|
|||
|
|
• SMS providers — only mobile number and OTP text
|
|||
|
|
• Legal requirements — when required by judicial authorities
|
|||
|
|
|
|||
|
|
In all cases, only the minimum necessary information is shared.`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "6. Your Rights",
|
|||
|
|
body: `You have the right to:
|
|||
|
|
• Access your personal information
|
|||
|
|
• Correct inaccurate information
|
|||
|
|
• Request deletion of your account and related data
|
|||
|
|
• Receive an export of your data
|
|||
|
|
• Opt out of marketing communications
|
|||
|
|
|
|||
|
|
To exercise any of these rights, contact us at privacy@meezi.ir`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "7. Cookies",
|
|||
|
|
body: `Meezi uses essential cookies for service functionality (authentication, session). No advertising or third-party tracking cookies are used.`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "8. Changes to This Policy",
|
|||
|
|
body: `If this policy changes, we will notify you via the dashboard or email. Continued use of the service after notification constitutes acceptance of the changes.`,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
h: "9. Contact Us",
|
|||
|
|
body: `For any privacy-related questions:
|
|||
|
|
Email: privacy@meezi.ir
|
|||
|
|
Address: Tehran, Iran`,
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
export default async function PrivacyPage({
|
|||
|
|
params,
|
|||
|
|
}: {
|
|||
|
|
params: { locale: string };
|
|||
|
|
}) {
|
|||
|
|
const { locale } = await Promise.resolve(params);
|
|||
|
|
const c = locale === "fa" ? fa : en;
|
|||
|
|
|
|||
|
|
return (
|
|||
|
|
<>
|
|||
|
|
<Navbar />
|
|||
|
|
<main className="pt-16">
|
|||
|
|
{/* Hero */}
|
|||
|
|
<div className="bg-gradient-to-br from-brand-900 to-brand-700 pb-16 pt-16 text-center">
|
|||
|
|
<div className="mx-auto flex h-14 w-14 items-center justify-center rounded-2xl bg-white/10">
|
|||
|
|
<Shield className="h-7 w-7 text-white" />
|
|||
|
|
</div>
|
|||
|
|
<span className="mt-4 inline-flex items-center gap-1.5 rounded-full border border-white/20 bg-white/10 px-3 py-1 text-xs font-semibold text-white/80">
|
|||
|
|
{c.badge}
|
|||
|
|
</span>
|
|||
|
|
<h1 className="mt-3 text-3xl font-extrabold text-white sm:text-4xl">{c.title}</h1>
|
|||
|
|
<p className="mt-2 text-sm text-white/50">{c.updated}</p>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
{/* Content */}
|
|||
|
|
<div className="mx-auto max-w-3xl px-4 py-16 sm:px-6 lg:px-8">
|
|||
|
|
<div className="space-y-10">
|
|||
|
|
{c.sections.map((sec) => (
|
|||
|
|
<div key={sec.h}>
|
|||
|
|
<h2 className="mb-3 text-lg font-bold text-gray-900">{sec.h}</h2>
|
|||
|
|
<div className="whitespace-pre-line text-sm leading-relaxed text-gray-600">
|
|||
|
|
{sec.body}
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
))}
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</main>
|
|||
|
|
<Footer />
|
|||
|
|
</>
|
|||
|
|
);
|
|||
|
|
}
|