refactor: unify domain and contact emails to canina.ir across all apps and seeds
All checks were successful
Deploy Canina / deploy (push) Successful in 1m55s
All checks were successful
Deploy Canina / deploy (push) Successful in 1m55s
This commit is contained in:
parent
bc011f4407
commit
6eb45cd467
@ -446,7 +446,7 @@ export async function main() {
|
||||
create: {
|
||||
id: adminId,
|
||||
mobile: '09120000000',
|
||||
email: 'admin@canino-iran.com',
|
||||
email: 'admin@canina.ir',
|
||||
firstName: 'Admin',
|
||||
lastName: 'User',
|
||||
role: 'ADMIN',
|
||||
|
||||
@ -120,7 +120,7 @@ const UI_TEXTS: Record<string, string> = {
|
||||
"footer_phone_label": "خط ویژه فروش",
|
||||
"footer_phone": "۰۲۱-۸۸۸۸ ۴۴۴۴",
|
||||
"footer_email_label": "مکاتبات رسمی",
|
||||
"footer_email": "info@canino-iran.com",
|
||||
"footer_email": "info@canina.ir",
|
||||
"footer_address_label": "دفتر مرکزی",
|
||||
"footer_address": "تهران، جردن، خیابان سعیدی، ساختمان کنینا، طبقه ۵، واحد ۱۹",
|
||||
"footer_auth_title": "اصالت کالا تضمین میشود",
|
||||
|
||||
@ -33,7 +33,7 @@ async function main() {
|
||||
console.log('Creating Admin User...');
|
||||
const adminHashedPassword = await bcrypt.hash('admin123', 10);
|
||||
await prisma.user.upsert({
|
||||
where: { email: 'admin@canino-iran.com' },
|
||||
where: { email: 'admin@canina.ir' },
|
||||
update: {
|
||||
password: adminHashedPassword,
|
||||
role: 'Admin',
|
||||
@ -42,7 +42,7 @@ async function main() {
|
||||
id: '12345678-1234-1234-1234-123456789012',
|
||||
firstName: 'مدیر',
|
||||
lastName: 'سیستم',
|
||||
email: 'admin@canino-iran.com',
|
||||
email: 'admin@canina.ir',
|
||||
password: adminHashedPassword,
|
||||
role: 'Admin',
|
||||
mobile: '09120000001'
|
||||
|
||||
@ -261,7 +261,7 @@ export class AuthService {
|
||||
}
|
||||
|
||||
async adminLogin(body: AdminLoginInput) {
|
||||
const adminEmail = process.env.ADMIN_EMAIL || 'admin@canina-iran.com';
|
||||
const adminEmail = process.env.ADMIN_EMAIL || 'admin@canina.ir';
|
||||
const adminPassword = process.env.ADMIN_PASSWORD || 'admin123';
|
||||
|
||||
// First check database for user with role 'Admin' or 'SUPER_ADMIN'
|
||||
|
||||
@ -2,7 +2,7 @@ import { IsEmail, IsNotEmpty, IsString, MinLength } from 'class-validator';
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
|
||||
export class AdminLoginDto {
|
||||
@ApiProperty({ description: 'ایمیل ادمین', example: 'admin@canina-iran.com' })
|
||||
@ApiProperty({ description: 'ایمیل ادمین', example: 'admin@canina.ir' })
|
||||
@IsEmail({}, { message: 'فرمت ایمیل وارد شده معتبر نمیباشد.' })
|
||||
@IsNotEmpty({ message: 'ایمیل الزامی است.' })
|
||||
email!: string;
|
||||
|
||||
@ -93,7 +93,7 @@ export class ContactService {
|
||||
{
|
||||
key: 'email_info',
|
||||
title: 'پست الکترونیک',
|
||||
value: 'info@canina-iran.com\n\nپاسخگویی در کمتر از ۲۴ ساعت کاری',
|
||||
value: 'info@canina.ir\n\nپاسخگویی در کمتر از ۲۴ ساعت کاری',
|
||||
icon: 'mail',
|
||||
order: 2,
|
||||
},
|
||||
|
||||
@ -417,7 +417,7 @@ export class OrdersService {
|
||||
await this.smsService
|
||||
.sendSms(
|
||||
order.user.mobile,
|
||||
`کاربر گرامی، مکمل درمانی پت شما در حال اتمام است. جهت شارژ مجدد و استفاده از ۵٪ تخفیف دوره جدید به لینک زیر مراجعه کنید:\nhttps://canina-iran.com/shop`,
|
||||
`کاربر گرامی، مکمل درمانی پت شما در حال اتمام است. جهت شارژ مجدد و استفاده از ۵٪ تخفیف دوره جدید به لینک زیر مراجعه کنید:\nhttps://canina.ir/shop`,
|
||||
)
|
||||
.catch(() => {});
|
||||
}
|
||||
|
||||
@ -59,7 +59,7 @@ export class SeoService {
|
||||
},
|
||||
offers: {
|
||||
'@type': 'Offer',
|
||||
url: `https://canino-iran.com/shop/${product.slug}`,
|
||||
url: `https://canina.ir/shop/${product.slug}`,
|
||||
priceCurrency: 'IRR',
|
||||
price: Number(product.priceValue) * 10, // Toman to Rial conversion if needed
|
||||
availability: 'https://schema.org/InStock',
|
||||
|
||||
@ -68,7 +68,7 @@ export class UsersService {
|
||||
id: '12345678-1234-1234-1234-123456789012',
|
||||
firstName: 'مدیر',
|
||||
lastName: 'سیستم',
|
||||
email: process.env.ADMIN_EMAIL || 'admin@canina-iran.com',
|
||||
email: process.env.ADMIN_EMAIL || 'admin@canina.ir',
|
||||
mobile: '09120000000',
|
||||
role: 'Admin',
|
||||
walletBalance: new Prisma.Decimal(0),
|
||||
|
||||
@ -72,14 +72,14 @@ pm2 startup
|
||||
## ۳. تنظیمات Nginx (Reverse Proxy)
|
||||
سرور Nginx مسئول دریافت ترافیک عمومی و هدایت آنها به پورتهای صحیح لوکال است.
|
||||
|
||||
- ترافیکهای دامنه `canino-iran.com` به پورت فرانتاند (`3000`) هدایت میشوند.
|
||||
- ترافیکهای دامنه `canina.ir` به پورت فرانتاند (`3000`) هدایت میشوند.
|
||||
- ترافیکهایی که دارای آدرس `/api/` در مسیر خود هستند مستقیماً به پورت بکاند (`3001`) هدایت میشوند.
|
||||
|
||||
### نمونه فایل کانفیگ Nginx
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name canino-iran.com www.canino-iran.com;
|
||||
server_name canina.ir www.canina.ir;
|
||||
|
||||
# ارسال ترافیک /api به Backend
|
||||
location /api/ {
|
||||
|
||||
@ -236,8 +236,8 @@ This document defines the strict integration contract between the NestJS backend
|
||||
"defaultMetaTitle": "کنینا ایران | مکملهای دارویی آلمانی حیوانات خانگی",
|
||||
"defaultMetaDescription": "نمایندگی رسمی محصولات کنینا فارما آلمان",
|
||||
"keywords": "مکمل سگ, مکمل گربه, کنهیدروکس, کنینا",
|
||||
"canonicalBaseUrl": "https://caninairan.com",
|
||||
"ogImageUrl": "https://caninairan.com/og-default.jpg"
|
||||
"canonicalBaseUrl": "https://canina.ir",
|
||||
"ogImageUrl": "https://canina.ir/og-default.jpg"
|
||||
}
|
||||
```
|
||||
- **`PATCH /api/settings/seo`**
|
||||
@ -313,7 +313,7 @@ This document defines the strict integration contract between the NestJS backend
|
||||
```json
|
||||
{
|
||||
"petId": "pet-uuid-optional",
|
||||
"fileUrl": "https://cdn.caninairan.com/prescriptions/rx-123.pdf",
|
||||
"fileUrl": "https://cdn.canina.ir/prescriptions/rx-123.pdf",
|
||||
"notes": "نسخه مربوط به کلینیک دکتر رضایی"
|
||||
}
|
||||
```
|
||||
|
||||
@ -132,7 +132,7 @@ export default function Login() {
|
||||
value={email}
|
||||
onChange={(e) => setEmail(e.target.value)}
|
||||
className="block w-full pl-3 pr-10 py-3 border border-gray-200 rounded-xl focus:ring-purple-500 focus:border-purple-500 sm:text-sm bg-gray-50 font-bold transition-all"
|
||||
placeholder="admin@canino-iran.com"
|
||||
placeholder="admin@canina.ir"
|
||||
dir="ltr"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@ -11,8 +11,8 @@ export default function SeoSettingsPage() {
|
||||
defaultMetaTitle: 'کنینا ایران | مکملهای دارویی آلمانی حیوانات خانگی',
|
||||
defaultMetaDescription: 'نمایندگی رسمی محصولات کنینا فارما آلمان در ایران',
|
||||
keywords: 'مکمل سگ, مکمل گربه, کنهیدروکس, کنینا',
|
||||
canonicalBaseUrl: 'https://caninairan.com',
|
||||
ogImageUrl: 'https://caninairan.com/og-default.jpg',
|
||||
canonicalBaseUrl: 'https://canina.ir',
|
||||
ogImageUrl: 'https://canina.ir/og-default.jpg',
|
||||
});
|
||||
const [isLoading, setIsLoading] = useState(true);
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
|
||||
@ -34,7 +34,7 @@ export default function Settings() {
|
||||
BRAND_TYPOGRAPHY: 'vazirmatn',
|
||||
CONTACT_PHONE: '۰۲۱-۸۸۸۸ ۴۴۴۴',
|
||||
CONTACT_PHONE_LINK: 'tel:02188884444',
|
||||
CONTACT_EMAIL: 'info@canina-iran.com',
|
||||
CONTACT_EMAIL: 'info@canina.ir',
|
||||
SOCIAL_WHATSAPP: '09120000000',
|
||||
SOCIAL_INSTAGRAM: 'https://instagram.com/canina_iran',
|
||||
SOCIAL_TELEGRAM: 'https://t.me/canina_iran',
|
||||
@ -61,7 +61,7 @@ export default function Settings() {
|
||||
BRAND_TYPOGRAPHY: d.BRAND_TYPOGRAPHY || 'vazirmatn',
|
||||
CONTACT_PHONE: d.CONTACT_PHONE || d.contact_phone || '۰۲۱-۸۸۸۸ ۴۴۴۴',
|
||||
CONTACT_PHONE_LINK: d.CONTACT_PHONE_LINK || d.contact_phone_link || 'tel:02188884444',
|
||||
CONTACT_EMAIL: d.CONTACT_EMAIL || d.contact_email || 'info@canina-iran.com',
|
||||
CONTACT_EMAIL: d.CONTACT_EMAIL || d.contact_email || 'info@canina.ir',
|
||||
SOCIAL_WHATSAPP: d.SOCIAL_WHATSAPP || d.contact_whatsapp || '09120000000',
|
||||
SOCIAL_INSTAGRAM: d.SOCIAL_INSTAGRAM || d.contact_instagram || 'https://instagram.com/canina_iran',
|
||||
SOCIAL_TELEGRAM: d.SOCIAL_TELEGRAM || d.contact_telegram || 'https://t.me/canina_iran',
|
||||
|
||||
@ -8,4 +8,4 @@ This version has breaking changes — APIs, conventions, and file structure may
|
||||
نام برند رسمی «**کنینا**» / «**Canina**» است (نه «کانینو» / «Canino»). در سرتاسر پروژه باید از Canina / کنینا استفاده شود.
|
||||
- CSS class names: `canina-blue`, `canina-gold`, `canina-teal`, `canina-dark`
|
||||
- Store/cookie names: `canina-user`, `canina-cart`, `canina-pets`
|
||||
- URL `https://canino-iran.com` (domain name, بدون تغییر میماند)
|
||||
- URL `https://canina.ir` (domain name)
|
||||
|
||||
@ -10,7 +10,7 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
title: "درباره ما - کنینا ایران",
|
||||
description: "داستان کنینا ایران و میراث ۴۰ ساله شرکت Canina pharma GmbH آلمان در تولید مکملهای فوقتخصصی دامپزشکی.",
|
||||
url: "https://canina-iran.com/about",
|
||||
url: "https://canina.ir/about",
|
||||
siteName: "کنینا ایران",
|
||||
locale: "fa_IR",
|
||||
type: "website",
|
||||
|
||||
@ -10,7 +10,7 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
title: "مجله سلامت حیوانات خانگی - کنینا ایران",
|
||||
description: "آخرین مقالات، آموزشها و اخبار علمی در زمینه نگهداری، تغذیه و سلامت سگ و گربه.",
|
||||
url: "https://canina-iran.com/blog",
|
||||
url: "https://canina.ir/blog",
|
||||
siteName: "کنینا ایران",
|
||||
locale: "fa_IR",
|
||||
type: "website",
|
||||
|
||||
@ -10,7 +10,7 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
title: "کاتالوگ رسمی مکملهای درمانی Canina Pharma Germany",
|
||||
description: "دانلود و مشاهده آنلاین کاتالوگ مکملهای دارویی حیوانات خانگی کنینا آلمان",
|
||||
url: "https://canina-iran.com/catalog",
|
||||
url: "https://canina.ir/catalog",
|
||||
siteName: "کنینا ایران",
|
||||
locale: "fa_IR",
|
||||
type: "website",
|
||||
|
||||
@ -10,7 +10,7 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
title: "تماس با ما - کنینا ایران",
|
||||
description: "راههای ارتباطی با نمایندگی رسمی مکملهای دامپزشکی کنینا در ایران.",
|
||||
url: "https://canina-iran.com/contact",
|
||||
url: "https://canina.ir/contact",
|
||||
siteName: "کنینا ایران",
|
||||
locale: "fa_IR",
|
||||
type: "website",
|
||||
|
||||
@ -21,7 +21,7 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
console.error('[SEO] Error fetching dynamic SEO settings:', err);
|
||||
}
|
||||
|
||||
const siteUrl = seoSettings?.canonicalBaseUrl || process.env.NEXT_PUBLIC_SITE_URL || 'https://canina-iran.com';
|
||||
const siteUrl = seoSettings?.canonicalBaseUrl || process.env.NEXT_PUBLIC_SITE_URL || 'https://canina.ir';
|
||||
const titleDefault = seoSettings?.defaultMetaTitle || 'کنینا ایران - مکملهای درمانی حیوانات خانگی با گرید دارویی اختصاصی';
|
||||
const descriptionDefault = seoSettings?.defaultMetaDescription || 'تدارک هوشمندانه سلامت برای همراهان وفادار شما. کنینا ایران واردکننده انحصاری مکملهای درمانی با گرید دارویی اختصاصی از آلمان.';
|
||||
|
||||
@ -118,13 +118,13 @@ export default function RootLayout({
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'Organization',
|
||||
name: 'کنینا ایران',
|
||||
url: 'https://canina-iran.com',
|
||||
url: 'https://canina.ir',
|
||||
logo: 'https://canina.de/media/fb/d5/47/1683116813/Logo.png',
|
||||
contactPoint: {
|
||||
'@type': 'ContactPoint',
|
||||
telephone: '+98-21-88884444',
|
||||
contactType: 'customer service',
|
||||
email: 'info@canina-iran.com',
|
||||
email: 'info@canina.ir',
|
||||
areaServed: 'IR',
|
||||
availableLanguage: 'Persian'
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
title: "کنینا ایران - مکملهای درمانی حیوانات خانگی با گرید دارویی اختصاصی",
|
||||
description: "واردکننده انحصاری مکملهای درمانی با گرید دارویی اختصاصی از آلمان",
|
||||
url: "https://canina-iran.com",
|
||||
url: "https://canina.ir",
|
||||
siteName: "کنینا ایران",
|
||||
locale: "fa_IR",
|
||||
type: "website",
|
||||
|
||||
@ -10,7 +10,7 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
title: "حریم خصوصی کاربران - کنینا ایران",
|
||||
description: "سیاستهای حفاظت از اطلاعات شخصی کاربران در وبسایت کنینا ایران.",
|
||||
url: "https://canina-iran.com/privacy",
|
||||
url: "https://canina.ir/privacy",
|
||||
siteName: "کنینا ایران",
|
||||
locale: "fa_IR",
|
||||
type: "website",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { MetadataRoute } from 'next';
|
||||
|
||||
export default function robots(): MetadataRoute.Robots {
|
||||
const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina-iran.com';
|
||||
const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina.ir';
|
||||
const isStaging =
|
||||
process.env.NEXT_PUBLIC_APP_ENV === 'staging' ||
|
||||
process.env.NODE_ENV !== 'production' ||
|
||||
|
||||
@ -48,7 +48,7 @@ export default async function ShopProductPage({ params }: { params: Promise<{ sl
|
||||
return <ProductPage productSlug={resolvedParams.slug} />;
|
||||
}
|
||||
|
||||
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina-iran.com';
|
||||
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina.ir';
|
||||
const productUrl = `${siteUrl}/shop/${resolvedParams.slug}`;
|
||||
const priceInRial = product.priceValue * 10;
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
title: "فروشگاه تخصصی مکملهای دارویی - کنینا ایران",
|
||||
description: "خرید آنلاین انواع مکملهای درمانی، مفاصل و استخوان، گوارش و ایمنی، ویتامینها و مراقبتهای ویژه سگ و گربه.",
|
||||
url: "https://canina-iran.com/shop",
|
||||
url: "https://canina.ir/shop",
|
||||
siteName: "کنینا ایران",
|
||||
locale: "fa_IR",
|
||||
type: "website",
|
||||
|
||||
@ -3,7 +3,7 @@ import { productService } from '../lib/services/productService';
|
||||
import { PRODUCTS } from '../lib/data/products';
|
||||
|
||||
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina-iran.com';
|
||||
const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina.ir';
|
||||
|
||||
// Static routes
|
||||
const staticRoutes: MetadataRoute.Sitemap = [
|
||||
|
||||
@ -2,7 +2,7 @@ import Link from 'next/link';
|
||||
import { ChevronRight } from 'lucide-react';
|
||||
import type { Metadata } from 'next';
|
||||
|
||||
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'https://apicanina.parsaaghayi.ir';
|
||||
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'https://api.canina.ir';
|
||||
|
||||
async function getWikiTerm(key: string) {
|
||||
try {
|
||||
|
||||
@ -11,7 +11,7 @@ export const metadata: Metadata = {
|
||||
openGraph: {
|
||||
title: "دانشنامه ترکیبات دارویی و علمی - کنینا ایران",
|
||||
description: "اطلاعات کامل در مورد مواد موثره، ویتامینها و ترکیبات گیاهی به کار رفته در محصولات تخصصی کنینا ایران.",
|
||||
url: "https://canina-iran.com/wiki",
|
||||
url: "https://canina.ir/wiki",
|
||||
siteName: "کنینا ایران",
|
||||
locale: "fa_IR",
|
||||
type: "website",
|
||||
|
||||
@ -136,7 +136,7 @@ export default function ContactFormClient() {
|
||||
<h4 className="text-xs font-black text-medical-gray-400 uppercase tracking-wider mb-1">
|
||||
پست الکترونیک
|
||||
</h4>
|
||||
<p className="text-sm font-black text-medical-gray-900">info@canina-iran.com</p>
|
||||
<p className="text-sm font-black text-medical-gray-900">info@canina.ir</p>
|
||||
<p className="text-xs text-medical-gray-500 font-bold">
|
||||
پاسخگویی در کمتر از ۲۴ ساعت کاری
|
||||
</p>
|
||||
|
||||
@ -29,10 +29,6 @@ const nextConfig: NextConfig = {
|
||||
protocol: 'https',
|
||||
hostname: 'stageapi.canina.ir',
|
||||
},
|
||||
{
|
||||
protocol: 'https',
|
||||
hostname: 'canina-iran.com',
|
||||
},
|
||||
{
|
||||
protocol: 'https',
|
||||
hostname: 'apicanina.parsaaghayi.ir',
|
||||
|
||||
File diff suppressed because one or more lines are too long
2
graphify-out/cache/stat-index.json
vendored
2
graphify-out/cache/stat-index.json
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user