mirror of
https://github.com/perfect-panel/ppanel-web.git
synced 2026-02-06 11:40:28 -05:00
✨ feat(privacy-policy): Add privacy policy related text and links
This commit is contained in:
parent
87381da1e5
commit
baa68f03e3
@ -1,6 +1,7 @@
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@workspace/ui/components/tabs';
|
||||
import { getTranslations } from 'next-intl/server';
|
||||
import Currency from './currency';
|
||||
import PrivacyPolicy from './privacy-policy';
|
||||
import Site from './site';
|
||||
import Tos from './tos';
|
||||
|
||||
@ -13,6 +14,7 @@ export default async function Page() {
|
||||
<TabsTrigger value='site'>{t('tabs.site')}</TabsTrigger>
|
||||
<TabsTrigger value='currency'>{t('tabs.currency')}</TabsTrigger>
|
||||
<TabsTrigger value='tos'>{t('tabs.tos')}</TabsTrigger>
|
||||
<TabsTrigger value='privacy-policy'>{t('tabs.privacy-policy.title')}</TabsTrigger>
|
||||
</TabsList>
|
||||
<TabsContent value='site'>
|
||||
<Site />
|
||||
@ -23,6 +25,9 @@ export default async function Page() {
|
||||
<TabsContent value='tos'>
|
||||
<Tos />
|
||||
</TabsContent>
|
||||
<TabsContent value='privacy-policy'>
|
||||
<PrivacyPolicy />
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
);
|
||||
}
|
||||
|
||||
48
apps/admin/app/dashboard/system/privacy-policy.tsx
Normal file
48
apps/admin/app/dashboard/system/privacy-policy.tsx
Normal file
@ -0,0 +1,48 @@
|
||||
'use client';
|
||||
|
||||
import { getPrivacyPolicyConfig, updatePrivacyPolicyConfig } from '@/services/admin/system';
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { MarkdownEditor } from '@workspace/ui/custom-components/editor';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { toast } from 'sonner';
|
||||
|
||||
export default function PrivacyPolicy() {
|
||||
const t = useTranslations('system.privacy-policy');
|
||||
const { data, refetch, isFetched } = useQuery({
|
||||
queryKey: ['getPrivacyPolicyConfig'],
|
||||
queryFn: async () => {
|
||||
const { data } = await getPrivacyPolicyConfig();
|
||||
return data.data;
|
||||
},
|
||||
});
|
||||
|
||||
async function updateConfig(key: string, value: unknown) {
|
||||
if (data?.[key] === value) return;
|
||||
try {
|
||||
await updatePrivacyPolicyConfig({
|
||||
...data,
|
||||
[key]: value,
|
||||
} as API.PrivacyPolicyConfig);
|
||||
toast.success(t('saveSuccess'));
|
||||
refetch();
|
||||
} catch (error) {
|
||||
/* empty */
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
isFetched && (
|
||||
<div className='h-[calc(100dvh-132px-env(safe-area-inset-top))] overflow-hidden'>
|
||||
<MarkdownEditor
|
||||
title={t('title')}
|
||||
value={data?.privacy_policy}
|
||||
onBlur={(value) => {
|
||||
if (data?.privacy_policy !== value) {
|
||||
updateConfig('privacy_policy', value);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
}
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Pouze pro zobrazení, po změně se změní všechny měnové jednotky v systému",
|
||||
"saveSuccess": "Úspěšně uloženo"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Uložení bylo úspěšné",
|
||||
"title": "Zásady ochrany osobních údajů"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Vlastní HTML",
|
||||
"customHtmlDescription": "Vlastní HTML kód, který bude vložen na konec tagu body na stránce.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Nur zur Anzeige verwendet, nach der Änderung werden alle Währungseinheiten im System geändert",
|
||||
"saveSuccess": "Erfolgreich gespeichert"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Erfolgreich gespeichert",
|
||||
"title": "Datenschutzrichtlinie"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Benutzerdefiniertes HTML",
|
||||
"customHtmlDescription": "Benutzerdefinierter HTML-Code, der am Ende des body-Tags der Seite eingefügt werden soll.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Used for display purposes only; changing this will affect all currency units in the system",
|
||||
"saveSuccess": "Save Successful"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Save Successful",
|
||||
"title": "Privacy Policy"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Custom HTML",
|
||||
"customHtmlDescription": "Custom HTML code to be injected into the bottom of the site's body tag.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Solo para uso de visualización, al cambiarlo se modificarán todas las unidades monetarias en el sistema",
|
||||
"saveSuccess": "Guardado exitosamente"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Guardado con éxito",
|
||||
"title": "Política de Privacidad"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "HTML personalizado",
|
||||
"customHtmlDescription": "Código HTML personalizado que se inyectará en la parte inferior de la etiqueta body del sitio.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Solo para fines de visualización, cambiarlo alterará todas las unidades monetarias en el sistema",
|
||||
"saveSuccess": "Guardado exitosamente"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Guardado exitoso",
|
||||
"title": "Política de Privacidad"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "HTML personalizado",
|
||||
"customHtmlDescription": "Código HTML personalizado que se inyectará al final de la etiqueta body del sitio.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "فقط برای نمایش استفاده میشود؛ تغییر این مورد بر تمام واحدهای ارزی در سیستم تأثیر خواهد گذاشت",
|
||||
"saveSuccess": "ذخیرهسازی موفقیتآمیز"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "ذخیره با موفقیت انجام شد",
|
||||
"title": "سیاست حفظ حریم خصوصی"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "HTML سفارشی",
|
||||
"customHtmlDescription": "کد HTML سفارشی که باید در انتهای تگ body سایت وارد شود.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Käytetään vain näyttötarkoituksiin, muutoksen jälkeen kaikki järjestelmän valuuttayksiköt muuttuvat",
|
||||
"saveSuccess": "Tallennus onnistui"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Tallennus onnistui",
|
||||
"title": "Tietosuojakäytäntö"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Mukautettu HTML",
|
||||
"customHtmlDescription": "Mukautettu HTML-koodi, joka lisätään sivuston body -tagin loppuun.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Utilisé uniquement pour l'affichage, toute modification entraînera un changement de toutes les unités monétaires dans le système",
|
||||
"saveSuccess": "Enregistrement réussi"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Enregistrement réussi",
|
||||
"title": "Politique de confidentialité"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "HTML personnalisé",
|
||||
"customHtmlDescription": "Code HTML personnalisé à injecter dans le bas de la balise body du site.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "केवल प्रदर्शन के लिए उपयोग किया जाता है, परिवर्तन के बाद सिस्टम में सभी मुद्रा इकाइयाँ बदल जाएँगी",
|
||||
"saveSuccess": "सफलतापूर्वक सहेजा गया"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "सफलता से सहेजा गया",
|
||||
"title": "गोपनीयता नीति"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "कस्टम HTML",
|
||||
"customHtmlDescription": "साइट के bodyैग के नीचे इंजेक्ट करने के लिए कस्टम HTML कोड।",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Csak megjelenítésre használatos, a módosítás után a rendszer összes pénznem egysége megváltozik",
|
||||
"saveSuccess": "Sikeres mentés"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Mentés sikeres",
|
||||
"title": "Adatvédelmi irányelvek"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Egyedi HTML",
|
||||
"customHtmlDescription": "Egyedi HTML kód, amelyet a webhely bodyímkéjének aljára kell beilleszteni.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "表示のみに使用され、変更するとシステム内のすべての通貨単位が変更されます",
|
||||
"saveSuccess": "保存に成功しました"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "保存に成功しました",
|
||||
"title": "プライバシーポリシー"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "カスタムHTML",
|
||||
"customHtmlDescription": "サイトの body タグの下部に挿入されるカスタム HTML コード。",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "표시용으로만 사용되며, 변경 시 시스템 내 모든 통화 단위가 변경됩니다",
|
||||
"saveSuccess": "저장 성공"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "저장 성공",
|
||||
"title": "개인정보 처리방침"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "사용자 정의 HTML",
|
||||
"customHtmlDescription": "사이트의 body그 하단에 삽입될 사용자 정의 HTML 코드입니다.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Kun for visningsformål, endring vil påvirke alle valutaenheter i systemet",
|
||||
"saveSuccess": "Lagring vellykket"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Lagring vellykket",
|
||||
"title": "Personvernerklæring"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Egendefinert HTML",
|
||||
"customHtmlDescription": "Egendefinert HTML-kode som skal settes inn i bunnen av nettstedets body-tag.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Używane wyłącznie do celów wyświetlania, po zmianie wszystkie jednostki walutowe w systemie zostaną zmienione",
|
||||
"saveSuccess": "Zapisano pomyślnie"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Zapisano pomyślnie",
|
||||
"title": "Polityka prywatności"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Niestandardowy HTML",
|
||||
"customHtmlDescription": "Niestandardowy kod HTML, który ma być wstrzyknięty na końcu tagu bodyitryny.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Usado apenas para exibição, após a alteração todas as unidades monetárias no sistema serão alteradas",
|
||||
"saveSuccess": "Salvo com sucesso"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Salvo com Sucesso",
|
||||
"title": "Política de Privacidade"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "HTML Personalizado",
|
||||
"customHtmlDescription": "Código HTML personalizado a ser inserido no final da tag bodyo site.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Utilizat doar pentru afișare, după modificare toate unitățile monetare din sistem vor fi schimbate",
|
||||
"saveSuccess": "Salvare reușită"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Salvare reușită",
|
||||
"title": "Politica de confidențialitate"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "HTML personalizat",
|
||||
"customHtmlDescription": "Cod HTML personalizat care va fi injectat în partea de jos a etichetei body a site-ului.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Используется только для отображения, после изменения все валютные единицы в системе будут изменены",
|
||||
"saveSuccess": "Успешно сохранено"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Сохранение успешно",
|
||||
"title": "Политика конфиденциальности"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Пользовательский HTML",
|
||||
"customHtmlDescription": "Пользовательский HTML-код, который будет вставлен в конец тега body сайта.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "ใช้สำหรับการแสดงผลเท่านั้น การเปลี่ยนแปลงจะส่งผลต่อหน่วยสกุลเงินทั้งหมดในระบบ",
|
||||
"saveSuccess": "บันทึกสำเร็จ"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "บันทึกสำเร็จ",
|
||||
"title": "นโยบายความเป็นส่วนตัว"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "HTML ที่กำหนดเอง",
|
||||
"customHtmlDescription": "รหัส HTML ที่กำหนดเองเพื่อแทรกลงในส่วนล่างของแท็ก body ของเว็บไซต์.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Sadece gösterim amaçlı kullanılır, değiştirildiğinde sistemdeki tüm para birimi birimleri değişecektir",
|
||||
"saveSuccess": "Başarıyla kaydedildi"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Başarıyla Kaydedildi",
|
||||
"title": "Gizlilik Politikası"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Özel HTML",
|
||||
"customHtmlDescription": "Site'in body etiketinin altına yerleştirilecek özel HTML kodu.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Використовується лише для відображення, після зміни всі валютні одиниці в системі будуть змінені",
|
||||
"saveSuccess": "Успішно збережено"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Збережено успішно",
|
||||
"title": "Політика конфіденційності"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "Користувацький HTML",
|
||||
"customHtmlDescription": "Користувацький HTML-код, який буде вставлено в кінець тегу body сайту.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "Chỉ sử dụng để hiển thị, sau khi thay đổi tất cả các đơn vị tiền tệ trong hệ thống sẽ thay đổi",
|
||||
"saveSuccess": "Lưu thành công"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "Lưu thành công",
|
||||
"title": "Chính sách bảo mật"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "HTML tùy chỉnh",
|
||||
"customHtmlDescription": "Mã HTML tùy chỉnh để được chèn vào cuối thẻ body của trang.",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "仅用于展示使用,更改后系统中所有的货币单位都将发生变更",
|
||||
"saveSuccess": "保存成功"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "保存成功",
|
||||
"title": "隐私政策"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "自定义HTML",
|
||||
"customHtmlDescription": "要注入到网站 body 标签底部的自定义 HTML 代码。",
|
||||
|
||||
@ -8,6 +8,10 @@
|
||||
"currencyUnitDescription": "僅用於展示使用,更改後系統中所有的貨幣單位都將發生變更",
|
||||
"saveSuccess": "保存成功"
|
||||
},
|
||||
"privacy-policy": {
|
||||
"saveSuccess": "保存成功",
|
||||
"title": "私隱政策"
|
||||
},
|
||||
"site": {
|
||||
"customHtml": "自定義HTML",
|
||||
"customHtmlDescription": "自定義 HTML 代碼,將注入到網站 body 標籤的底部。",
|
||||
|
||||
@ -203,6 +203,29 @@ export async function updateNodeConfig(body: API.NodeConfig, options?: { [key: s
|
||||
});
|
||||
}
|
||||
|
||||
/** get Privacy Policy Config GET /v1/admin/system/privacy */
|
||||
export async function getPrivacyPolicyConfig(options?: { [key: string]: any }) {
|
||||
return request<API.Response & { data?: API.PrivacyPolicyConfig }>('/v1/admin/system/privacy', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** Update Privacy Policy Config PUT /v1/admin/system/privacy */
|
||||
export async function updatePrivacyPolicyConfig(
|
||||
body: API.PrivacyPolicyConfig,
|
||||
options?: { [key: string]: any },
|
||||
) {
|
||||
return request<API.Response & { data?: any }>('/v1/admin/system/privacy', {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** Get register config GET /v1/admin/system/register_config */
|
||||
export async function getRegisterConfig(options?: { [key: string]: any }) {
|
||||
return request<API.Response & { data?: API.RegisterConfig }>('/v1/admin/system/register_config', {
|
||||
|
||||
4
apps/admin/services/admin/typings.d.ts
vendored
4
apps/admin/services/admin/typings.d.ts
vendored
@ -879,6 +879,10 @@ declare namespace API {
|
||||
list: PlatformInfo[];
|
||||
};
|
||||
|
||||
type PrivacyPolicyConfig = {
|
||||
privacy_policy: string;
|
||||
};
|
||||
|
||||
type PubilcRegisterConfig = {
|
||||
stop_register: boolean;
|
||||
enable_ip_register_limit: boolean;
|
||||
|
||||
@ -42,6 +42,14 @@ export async function getGlobalConfig(options?: { [key: string]: any }) {
|
||||
});
|
||||
}
|
||||
|
||||
/** Get Privacy Policy GET /v1/common/site/privacy */
|
||||
export async function getPrivacyPolicy(options?: { [key: string]: any }) {
|
||||
return request<API.Response & { data?: API.PrivacyPolicyConfig }>('/v1/common/site/privacy', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** Get stat GET /v1/common/site/stat */
|
||||
export async function getStat(options?: { [key: string]: any }) {
|
||||
return request<API.Response & { data?: API.GetStatResponse }>('/v1/common/site/stat', {
|
||||
|
||||
@ -32,6 +32,7 @@ export async function appleLoginCallback(
|
||||
return request<API.Response & { data?: any }>('/v1/auth/oauth/callback/apple', {
|
||||
method: 'POST',
|
||||
data: formData,
|
||||
requestType: 'form',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
4
apps/admin/services/common/typings.d.ts
vendored
4
apps/admin/services/common/typings.d.ts
vendored
@ -309,6 +309,10 @@ declare namespace API {
|
||||
enable: boolean;
|
||||
};
|
||||
|
||||
type PrivacyPolicyConfig = {
|
||||
privacy_policy: string;
|
||||
};
|
||||
|
||||
type PubilcRegisterConfig = {
|
||||
stop_register: boolean;
|
||||
enable_ip_register_limit: boolean;
|
||||
|
||||
11
apps/user/app/(main)/privacy-policy/page.tsx
Normal file
11
apps/user/app/(main)/privacy-policy/page.tsx
Normal file
@ -0,0 +1,11 @@
|
||||
import { getPrivacyPolicy } from '@/services/common/common';
|
||||
import { Markdown } from '@workspace/ui/custom-components/markdown';
|
||||
|
||||
export default async function Page() {
|
||||
const { data } = await getPrivacyPolicy();
|
||||
return (
|
||||
<div className='container py-8'>
|
||||
<Markdown>{data.data?.privacy_policy || ''}</Markdown>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@ -70,6 +70,9 @@ export default function Footer() {
|
||||
<Link href='/tos' className='ml-2 underline'>
|
||||
{t('tos')}
|
||||
</Link>
|
||||
<Link href='/privacy-policy' className='ml-2 underline'>
|
||||
{t('privacyPolicy')}
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Telefon"
|
||||
},
|
||||
"orWithEmail": "nebo pomocí e-mailu",
|
||||
"privacyPolicy": "Zásady ochrany osobních údajů",
|
||||
"register": {
|
||||
"description": "Vytvořte si nový účet, vyplňte své údaje pro registraci.",
|
||||
"email": "Zadejte prosím platnou e-mailovou adresu.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Telefon"
|
||||
},
|
||||
"orWithEmail": "oder mit E-Mail",
|
||||
"privacyPolicy": "Datenschutzrichtlinie",
|
||||
"register": {
|
||||
"description": "Erstellen Sie ein neues Konto, indem Sie Ihre Informationen ausfüllen, um sich zu registrieren.",
|
||||
"email": "Bitte geben Sie eine gültige E-Mail-Adresse ein.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Telephone"
|
||||
},
|
||||
"orWithEmail": "Or with Email",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"register": {
|
||||
"description": "Create a new account, fill in your information to register.",
|
||||
"email": "Please enter a valid email address.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Teléfono"
|
||||
},
|
||||
"orWithEmail": "o usar correo electrónico",
|
||||
"privacyPolicy": "Política de Privacidad",
|
||||
"register": {
|
||||
"description": "Crea una nueva cuenta, completa tu información para registrarte.",
|
||||
"email": "Por favor, introduce una dirección de correo electrónico válida.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Teléfono"
|
||||
},
|
||||
"orWithEmail": "o usar correo electrónico",
|
||||
"privacyPolicy": "Política de Privacidad",
|
||||
"register": {
|
||||
"description": "Crea una nueva cuenta, completa tu información para registrarte.",
|
||||
"email": "Por favor, ingresa una dirección de correo electrónico válida.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "تلفن"
|
||||
},
|
||||
"orWithEmail": "یا با ایمیل",
|
||||
"privacyPolicy": "سیاست حفظ حریم خصوصی",
|
||||
"register": {
|
||||
"description": "ایجاد یک حساب کاربری جدید، اطلاعات خود را برای ثبتنام وارد کنید.",
|
||||
"email": "لطفاً یک آدرس ایمیل معتبر وارد کنید.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Puhelin"
|
||||
},
|
||||
"orWithEmail": "tai käytä sähköpostia",
|
||||
"privacyPolicy": "Tietosuojakäytäntö",
|
||||
"register": {
|
||||
"description": "Luo uusi tili täyttämällä tietosi rekisteröityäksesi.",
|
||||
"email": "Anna kelvollinen sähköpostiosoite.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Téléphone"
|
||||
},
|
||||
"orWithEmail": "ou utiliser l'e-mail",
|
||||
"privacyPolicy": "Politique de confidentialité",
|
||||
"register": {
|
||||
"description": "Créez un nouveau compte, remplissez vos informations pour vous inscrire.",
|
||||
"email": "Veuillez entrer une adresse email valide.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "टेलीफोन"
|
||||
},
|
||||
"orWithEmail": "या ईमेल का उपयोग करें",
|
||||
"privacyPolicy": "गोपनीयता नीति",
|
||||
"register": {
|
||||
"description": "नया खाता बनाएं, पंजीकरण के लिए अपनी जानकारी भरें।",
|
||||
"email": "कृपया एक मान्य ईमेल पता दर्ज करें।",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Telefon"
|
||||
},
|
||||
"orWithEmail": "vagy használja az e-mailt",
|
||||
"privacyPolicy": "Adatvédelmi irányelvek",
|
||||
"register": {
|
||||
"description": "Hozzon létre új fiókot, töltse ki adatait a regisztrációhoz.",
|
||||
"email": "Kérjük, adjon meg egy érvényes e-mail címet.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "電話"
|
||||
},
|
||||
"orWithEmail": "またはメールを使用",
|
||||
"privacyPolicy": "プライバシーポリシー",
|
||||
"register": {
|
||||
"description": "新しいアカウントを作成し、情報を入力して登録してください。",
|
||||
"email": "有効なメールアドレスを入力してください。",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "전화"
|
||||
},
|
||||
"orWithEmail": "또는 이메일 사용",
|
||||
"privacyPolicy": "개인정보 처리방침",
|
||||
"register": {
|
||||
"description": "새 계정을 생성하고 정보를 입력하여 등록하세요.",
|
||||
"email": "유효한 이메일 주소를 입력해 주세요.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Telefon"
|
||||
},
|
||||
"orWithEmail": "eller bruk e-post",
|
||||
"privacyPolicy": "Personvernerklæring",
|
||||
"register": {
|
||||
"description": "Opprett en ny konto, fyll inn informasjonen din for å registrere deg.",
|
||||
"email": "Vennligst oppgi en gyldig e-postadresse.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Telefon"
|
||||
},
|
||||
"orWithEmail": "lub użyj e-maila",
|
||||
"privacyPolicy": "Polityka Prywatności",
|
||||
"register": {
|
||||
"description": "Utwórz nowe konto, wypełnij swoje dane, aby się zarejestrować.",
|
||||
"email": "Proszę wprowadzić prawidłowy adres e-mail.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Telefone"
|
||||
},
|
||||
"orWithEmail": "ou use o e-mail",
|
||||
"privacyPolicy": "Política de Privacidade",
|
||||
"register": {
|
||||
"description": "Crie uma nova conta, preencha suas informações para se registrar.",
|
||||
"email": "Por favor, insira um endereço de e-mail válido.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Telefon"
|
||||
},
|
||||
"orWithEmail": "sau folosește e-mailul",
|
||||
"privacyPolicy": "Politica de confidențialitate",
|
||||
"register": {
|
||||
"description": "Creați un cont nou, completați informațiile dvs. pentru a vă înregistra.",
|
||||
"email": "Vă rugăm să introduceți o adresă de email validă.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Телефон"
|
||||
},
|
||||
"orWithEmail": "или с помощью электронной почты",
|
||||
"privacyPolicy": "Политика конфиденциальности",
|
||||
"register": {
|
||||
"description": "Создайте новый аккаунт, заполните свои данные для регистрации.",
|
||||
"email": "Пожалуйста, введите действительный адрес электронной почты.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "โทรศัพท์"
|
||||
},
|
||||
"orWithEmail": "หรือใช้ที่อยู่อีเมล",
|
||||
"privacyPolicy": "นโยบายความเป็นส่วนตัว",
|
||||
"register": {
|
||||
"description": "สร้างบัญชีใหม่ กรอกข้อมูลของคุณเพื่อสมัครสมาชิก",
|
||||
"email": "กรุณากรอกที่อยู่อีเมลที่ถูกต้อง",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Telefon"
|
||||
},
|
||||
"orWithEmail": "veya e-posta ile",
|
||||
"privacyPolicy": "Gizlilik Politikası",
|
||||
"register": {
|
||||
"description": "Yeni bir hesap oluşturun, kaydolmak için bilgilerinizi doldurun.",
|
||||
"email": "Lütfen geçerli bir e-posta adresi girin.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Телефон"
|
||||
},
|
||||
"orWithEmail": "або використовуйте електронну пошту",
|
||||
"privacyPolicy": "Політика конфіденційності",
|
||||
"register": {
|
||||
"description": "Створіть новий обліковий запис, заповніть ваші дані для реєстрації.",
|
||||
"email": "Будь ласка, введіть дійсну електронну адресу.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "Điện thoại"
|
||||
},
|
||||
"orWithEmail": "hoặc sử dụng email",
|
||||
"privacyPolicy": "Chính sách bảo mật",
|
||||
"register": {
|
||||
"description": "Tạo tài khoản mới, điền thông tin của bạn để đăng ký.",
|
||||
"email": "Vui lòng nhập địa chỉ email hợp lệ.",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "电话"
|
||||
},
|
||||
"orWithEmail": "或使用邮箱",
|
||||
"privacyPolicy": "隐私政策",
|
||||
"register": {
|
||||
"description": "创建新账户,填写您的信息以注册。",
|
||||
"email": "请输入有效的电子邮件地址。",
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
"mobile": "電話"
|
||||
},
|
||||
"orWithEmail": "或使用電子郵件",
|
||||
"privacyPolicy": "私隱政策",
|
||||
"register": {
|
||||
"description": "建立新帳戶,填寫您的資訊以註冊。",
|
||||
"email": "請輸入有效的電郵地址。",
|
||||
|
||||
@ -42,6 +42,14 @@ export async function getGlobalConfig(options?: { [key: string]: any }) {
|
||||
});
|
||||
}
|
||||
|
||||
/** Get Privacy Policy GET /v1/common/site/privacy */
|
||||
export async function getPrivacyPolicy(options?: { [key: string]: any }) {
|
||||
return request<API.Response & { data?: API.PrivacyPolicyConfig }>('/v1/common/site/privacy', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** Get stat GET /v1/common/site/stat */
|
||||
export async function getStat(options?: { [key: string]: any }) {
|
||||
return request<API.Response & { data?: API.GetStatResponse }>('/v1/common/site/stat', {
|
||||
|
||||
@ -32,6 +32,7 @@ export async function appleLoginCallback(
|
||||
return request<API.Response & { data?: any }>('/v1/auth/oauth/callback/apple', {
|
||||
method: 'POST',
|
||||
data: formData,
|
||||
requestType: 'form',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
4
apps/user/services/common/typings.d.ts
vendored
4
apps/user/services/common/typings.d.ts
vendored
@ -309,6 +309,10 @@ declare namespace API {
|
||||
enable: boolean;
|
||||
};
|
||||
|
||||
type PrivacyPolicyConfig = {
|
||||
privacy_policy: string;
|
||||
};
|
||||
|
||||
type PubilcRegisterConfig = {
|
||||
stop_register: boolean;
|
||||
enable_ip_register_limit: boolean;
|
||||
|
||||
4
apps/user/services/user/typings.d.ts
vendored
4
apps/user/services/user/typings.d.ts
vendored
@ -372,6 +372,10 @@ declare namespace API {
|
||||
deduction_amount: number;
|
||||
};
|
||||
|
||||
type PrivacyPolicyConfig = {
|
||||
privacy_policy: string;
|
||||
};
|
||||
|
||||
type PubilcRegisterConfig = {
|
||||
stop_register: boolean;
|
||||
enable_ip_register_limit: boolean;
|
||||
|
||||
@ -50,7 +50,10 @@ export function Logout() {
|
||||
if (!isBrowser()) return;
|
||||
cookies.remove('Authorization');
|
||||
const pathname = location.pathname;
|
||||
if (!['', '/', '/auth', '/tos'].includes(pathname) && !pathname.startsWith('/oauth/')) {
|
||||
if (
|
||||
!['', '/', '/auth', '/tos', '/privacy-policy'].includes(pathname) &&
|
||||
!pathname.startsWith('/oauth/')
|
||||
) {
|
||||
setRedirectUrl(location.pathname);
|
||||
location.href = `/auth`;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user