diff --git a/apps/admin/app/dashboard/system/page.tsx b/apps/admin/app/dashboard/system/page.tsx index 12de8ef..347cba4 100644 --- a/apps/admin/app/dashboard/system/page.tsx +++ b/apps/admin/app/dashboard/system/page.tsx @@ -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() { {t('tabs.site')} {t('tabs.currency')} {t('tabs.tos')} + {t('tabs.privacy-policy.title')} @@ -23,6 +25,9 @@ export default async function Page() { + + + ); } diff --git a/apps/admin/app/dashboard/system/privacy-policy.tsx b/apps/admin/app/dashboard/system/privacy-policy.tsx new file mode 100644 index 0000000..22ff7b7 --- /dev/null +++ b/apps/admin/app/dashboard/system/privacy-policy.tsx @@ -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 && ( +
+ { + if (data?.privacy_policy !== value) { + updateConfig('privacy_policy', value); + } + }} + /> +
+ ) + ); +} diff --git a/apps/admin/locales/cs-CZ/system.json b/apps/admin/locales/cs-CZ/system.json index af22961..161e9f1 100644 --- a/apps/admin/locales/cs-CZ/system.json +++ b/apps/admin/locales/cs-CZ/system.json @@ -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.", diff --git a/apps/admin/locales/de-DE/system.json b/apps/admin/locales/de-DE/system.json index d4bfd3f..d93445b 100644 --- a/apps/admin/locales/de-DE/system.json +++ b/apps/admin/locales/de-DE/system.json @@ -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.", diff --git a/apps/admin/locales/en-US/system.json b/apps/admin/locales/en-US/system.json index af5fcc8..2bd8404 100644 --- a/apps/admin/locales/en-US/system.json +++ b/apps/admin/locales/en-US/system.json @@ -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.", diff --git a/apps/admin/locales/es-ES/system.json b/apps/admin/locales/es-ES/system.json index 8b4e303..babfde8 100644 --- a/apps/admin/locales/es-ES/system.json +++ b/apps/admin/locales/es-ES/system.json @@ -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.", diff --git a/apps/admin/locales/es-MX/system.json b/apps/admin/locales/es-MX/system.json index 40ec67a..47b96bd 100644 --- a/apps/admin/locales/es-MX/system.json +++ b/apps/admin/locales/es-MX/system.json @@ -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.", diff --git a/apps/admin/locales/fa-IR/system.json b/apps/admin/locales/fa-IR/system.json index 4a38479..0f63eb4 100644 --- a/apps/admin/locales/fa-IR/system.json +++ b/apps/admin/locales/fa-IR/system.json @@ -8,6 +8,10 @@ "currencyUnitDescription": "فقط برای نمایش استفاده می‌شود؛ تغییر این مورد بر تمام واحدهای ارزی در سیستم تأثیر خواهد گذاشت", "saveSuccess": "ذخیره‌سازی موفقیت‌آمیز" }, + "privacy-policy": { + "saveSuccess": "ذخیره با موفقیت انجام شد", + "title": "سیاست حفظ حریم خصوصی" + }, "site": { "customHtml": "HTML سفارشی", "customHtmlDescription": "کد HTML سفارشی که باید در انتهای تگ body سایت وارد شود.", diff --git a/apps/admin/locales/fi-FI/system.json b/apps/admin/locales/fi-FI/system.json index 37524ce..583aa37 100644 --- a/apps/admin/locales/fi-FI/system.json +++ b/apps/admin/locales/fi-FI/system.json @@ -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.", diff --git a/apps/admin/locales/fr-FR/system.json b/apps/admin/locales/fr-FR/system.json index 65a496d..37c001d 100644 --- a/apps/admin/locales/fr-FR/system.json +++ b/apps/admin/locales/fr-FR/system.json @@ -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.", diff --git a/apps/admin/locales/hi-IN/system.json b/apps/admin/locales/hi-IN/system.json index 59e71fd..275f4f3 100644 --- a/apps/admin/locales/hi-IN/system.json +++ b/apps/admin/locales/hi-IN/system.json @@ -8,6 +8,10 @@ "currencyUnitDescription": "केवल प्रदर्शन के लिए उपयोग किया जाता है, परिवर्तन के बाद सिस्टम में सभी मुद्रा इकाइयाँ बदल जाएँगी", "saveSuccess": "सफलतापूर्वक सहेजा गया" }, + "privacy-policy": { + "saveSuccess": "सफलता से सहेजा गया", + "title": "गोपनीयता नीति" + }, "site": { "customHtml": "कस्टम HTML", "customHtmlDescription": "साइट के bodyैग के नीचे इंजेक्ट करने के लिए कस्टम HTML कोड।", diff --git a/apps/admin/locales/hu-HU/system.json b/apps/admin/locales/hu-HU/system.json index f4dc22f..ea944a3 100644 --- a/apps/admin/locales/hu-HU/system.json +++ b/apps/admin/locales/hu-HU/system.json @@ -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.", diff --git a/apps/admin/locales/ja-JP/system.json b/apps/admin/locales/ja-JP/system.json index 4c51324..bfbc88b 100644 --- a/apps/admin/locales/ja-JP/system.json +++ b/apps/admin/locales/ja-JP/system.json @@ -8,6 +8,10 @@ "currencyUnitDescription": "表示のみに使用され、変更するとシステム内のすべての通貨単位が変更されます", "saveSuccess": "保存に成功しました" }, + "privacy-policy": { + "saveSuccess": "保存に成功しました", + "title": "プライバシーポリシー" + }, "site": { "customHtml": "カスタムHTML", "customHtmlDescription": "サイトの body タグの下部に挿入されるカスタム HTML コード。", diff --git a/apps/admin/locales/ko-KR/system.json b/apps/admin/locales/ko-KR/system.json index 1589b81..b7285ca 100644 --- a/apps/admin/locales/ko-KR/system.json +++ b/apps/admin/locales/ko-KR/system.json @@ -8,6 +8,10 @@ "currencyUnitDescription": "표시용으로만 사용되며, 변경 시 시스템 내 모든 통화 단위가 변경됩니다", "saveSuccess": "저장 성공" }, + "privacy-policy": { + "saveSuccess": "저장 성공", + "title": "개인정보 처리방침" + }, "site": { "customHtml": "사용자 정의 HTML", "customHtmlDescription": "사이트의 body그 하단에 삽입될 사용자 정의 HTML 코드입니다.", diff --git a/apps/admin/locales/no-NO/system.json b/apps/admin/locales/no-NO/system.json index 3421ed8..85062db 100644 --- a/apps/admin/locales/no-NO/system.json +++ b/apps/admin/locales/no-NO/system.json @@ -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.", diff --git a/apps/admin/locales/pl-PL/system.json b/apps/admin/locales/pl-PL/system.json index 5f3c2b8..5177aff 100644 --- a/apps/admin/locales/pl-PL/system.json +++ b/apps/admin/locales/pl-PL/system.json @@ -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.", diff --git a/apps/admin/locales/pt-BR/system.json b/apps/admin/locales/pt-BR/system.json index 3aac3d9..e015d51 100644 --- a/apps/admin/locales/pt-BR/system.json +++ b/apps/admin/locales/pt-BR/system.json @@ -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.", diff --git a/apps/admin/locales/ro-RO/system.json b/apps/admin/locales/ro-RO/system.json index 71a924e..2852170 100644 --- a/apps/admin/locales/ro-RO/system.json +++ b/apps/admin/locales/ro-RO/system.json @@ -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.", diff --git a/apps/admin/locales/ru-RU/system.json b/apps/admin/locales/ru-RU/system.json index a119cae..8c932ad 100644 --- a/apps/admin/locales/ru-RU/system.json +++ b/apps/admin/locales/ru-RU/system.json @@ -8,6 +8,10 @@ "currencyUnitDescription": "Используется только для отображения, после изменения все валютные единицы в системе будут изменены", "saveSuccess": "Успешно сохранено" }, + "privacy-policy": { + "saveSuccess": "Сохранение успешно", + "title": "Политика конфиденциальности" + }, "site": { "customHtml": "Пользовательский HTML", "customHtmlDescription": "Пользовательский HTML-код, который будет вставлен в конец тега body сайта.", diff --git a/apps/admin/locales/th-TH/system.json b/apps/admin/locales/th-TH/system.json index caad1d6..40a39b7 100644 --- a/apps/admin/locales/th-TH/system.json +++ b/apps/admin/locales/th-TH/system.json @@ -8,6 +8,10 @@ "currencyUnitDescription": "ใช้สำหรับการแสดงผลเท่านั้น การเปลี่ยนแปลงจะส่งผลต่อหน่วยสกุลเงินทั้งหมดในระบบ", "saveSuccess": "บันทึกสำเร็จ" }, + "privacy-policy": { + "saveSuccess": "บันทึกสำเร็จ", + "title": "นโยบายความเป็นส่วนตัว" + }, "site": { "customHtml": "HTML ที่กำหนดเอง", "customHtmlDescription": "รหัส HTML ที่กำหนดเองเพื่อแทรกลงในส่วนล่างของแท็ก body ของเว็บไซต์.", diff --git a/apps/admin/locales/tr-TR/system.json b/apps/admin/locales/tr-TR/system.json index 640bd1c..e1d17ba 100644 --- a/apps/admin/locales/tr-TR/system.json +++ b/apps/admin/locales/tr-TR/system.json @@ -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.", diff --git a/apps/admin/locales/uk-UA/system.json b/apps/admin/locales/uk-UA/system.json index 1a29f7e..41b4ae9 100644 --- a/apps/admin/locales/uk-UA/system.json +++ b/apps/admin/locales/uk-UA/system.json @@ -8,6 +8,10 @@ "currencyUnitDescription": "Використовується лише для відображення, після зміни всі валютні одиниці в системі будуть змінені", "saveSuccess": "Успішно збережено" }, + "privacy-policy": { + "saveSuccess": "Збережено успішно", + "title": "Політика конфіденційності" + }, "site": { "customHtml": "Користувацький HTML", "customHtmlDescription": "Користувацький HTML-код, який буде вставлено в кінець тегу body сайту.", diff --git a/apps/admin/locales/vi-VN/system.json b/apps/admin/locales/vi-VN/system.json index a37d004..16e261b 100644 --- a/apps/admin/locales/vi-VN/system.json +++ b/apps/admin/locales/vi-VN/system.json @@ -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.", diff --git a/apps/admin/locales/zh-CN/system.json b/apps/admin/locales/zh-CN/system.json index 0ed297b..b1ac00f 100644 --- a/apps/admin/locales/zh-CN/system.json +++ b/apps/admin/locales/zh-CN/system.json @@ -8,6 +8,10 @@ "currencyUnitDescription": "仅用于展示使用,更改后系统中所有的货币单位都将发生变更", "saveSuccess": "保存成功" }, + "privacy-policy": { + "saveSuccess": "保存成功", + "title": "隐私政策" + }, "site": { "customHtml": "自定义HTML", "customHtmlDescription": "要注入到网站 body 标签底部的自定义 HTML 代码。", diff --git a/apps/admin/locales/zh-HK/system.json b/apps/admin/locales/zh-HK/system.json index 9bfc9f2..ce28e4f 100644 --- a/apps/admin/locales/zh-HK/system.json +++ b/apps/admin/locales/zh-HK/system.json @@ -8,6 +8,10 @@ "currencyUnitDescription": "僅用於展示使用,更改後系統中所有的貨幣單位都將發生變更", "saveSuccess": "保存成功" }, + "privacy-policy": { + "saveSuccess": "保存成功", + "title": "私隱政策" + }, "site": { "customHtml": "自定義HTML", "customHtmlDescription": "自定義 HTML 代碼,將注入到網站 body 標籤的底部。", diff --git a/apps/admin/services/admin/system.ts b/apps/admin/services/admin/system.ts index 4e52bc1..84e8a32 100644 --- a/apps/admin/services/admin/system.ts +++ b/apps/admin/services/admin/system.ts @@ -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('/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('/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('/v1/admin/system/register_config', { diff --git a/apps/admin/services/admin/typings.d.ts b/apps/admin/services/admin/typings.d.ts index 3ff4074..cc2c921 100644 --- a/apps/admin/services/admin/typings.d.ts +++ b/apps/admin/services/admin/typings.d.ts @@ -879,6 +879,10 @@ declare namespace API { list: PlatformInfo[]; }; + type PrivacyPolicyConfig = { + privacy_policy: string; + }; + type PubilcRegisterConfig = { stop_register: boolean; enable_ip_register_limit: boolean; diff --git a/apps/admin/services/common/common.ts b/apps/admin/services/common/common.ts index d200045..685ef9c 100644 --- a/apps/admin/services/common/common.ts +++ b/apps/admin/services/common/common.ts @@ -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('/v1/common/site/privacy', { + method: 'GET', + ...(options || {}), + }); +} + /** Get stat GET /v1/common/site/stat */ export async function getStat(options?: { [key: string]: any }) { return request('/v1/common/site/stat', { diff --git a/apps/admin/services/common/oauth.ts b/apps/admin/services/common/oauth.ts index 17e493f..ff6a4c0 100644 --- a/apps/admin/services/common/oauth.ts +++ b/apps/admin/services/common/oauth.ts @@ -32,6 +32,7 @@ export async function appleLoginCallback( return request('/v1/auth/oauth/callback/apple', { method: 'POST', data: formData, + requestType: 'form', ...(options || {}), }); } diff --git a/apps/admin/services/common/typings.d.ts b/apps/admin/services/common/typings.d.ts index 7d3974f..eca8fca 100644 --- a/apps/admin/services/common/typings.d.ts +++ b/apps/admin/services/common/typings.d.ts @@ -309,6 +309,10 @@ declare namespace API { enable: boolean; }; + type PrivacyPolicyConfig = { + privacy_policy: string; + }; + type PubilcRegisterConfig = { stop_register: boolean; enable_ip_register_limit: boolean; diff --git a/apps/user/app/(main)/privacy-policy/page.tsx b/apps/user/app/(main)/privacy-policy/page.tsx new file mode 100644 index 0000000..c65fe91 --- /dev/null +++ b/apps/user/app/(main)/privacy-policy/page.tsx @@ -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 ( +
+ {data.data?.privacy_policy || ''} +
+ ); +} diff --git a/apps/user/components/footer.tsx b/apps/user/components/footer.tsx index 2c42b3b..f45aa52 100644 --- a/apps/user/components/footer.tsx +++ b/apps/user/components/footer.tsx @@ -70,6 +70,9 @@ export default function Footer() { {t('tos')} + + {t('privacyPolicy')} + diff --git a/apps/user/locales/cs-CZ/auth.json b/apps/user/locales/cs-CZ/auth.json index 8b292c9..e954aa7 100644 --- a/apps/user/locales/cs-CZ/auth.json +++ b/apps/user/locales/cs-CZ/auth.json @@ -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.", diff --git a/apps/user/locales/de-DE/auth.json b/apps/user/locales/de-DE/auth.json index 94dbfea..bfc1890 100644 --- a/apps/user/locales/de-DE/auth.json +++ b/apps/user/locales/de-DE/auth.json @@ -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.", diff --git a/apps/user/locales/en-US/auth.json b/apps/user/locales/en-US/auth.json index 45946bf..ffb5775 100644 --- a/apps/user/locales/en-US/auth.json +++ b/apps/user/locales/en-US/auth.json @@ -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.", diff --git a/apps/user/locales/es-ES/auth.json b/apps/user/locales/es-ES/auth.json index 2c7850b..86d6bca 100644 --- a/apps/user/locales/es-ES/auth.json +++ b/apps/user/locales/es-ES/auth.json @@ -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.", diff --git a/apps/user/locales/es-MX/auth.json b/apps/user/locales/es-MX/auth.json index 515fcb0..380537c 100644 --- a/apps/user/locales/es-MX/auth.json +++ b/apps/user/locales/es-MX/auth.json @@ -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.", diff --git a/apps/user/locales/fa-IR/auth.json b/apps/user/locales/fa-IR/auth.json index d096f11..c7c85ba 100644 --- a/apps/user/locales/fa-IR/auth.json +++ b/apps/user/locales/fa-IR/auth.json @@ -23,6 +23,7 @@ "mobile": "تلفن" }, "orWithEmail": "یا با ایمیل", + "privacyPolicy": "سیاست حفظ حریم خصوصی", "register": { "description": "ایجاد یک حساب کاربری جدید، اطلاعات خود را برای ثبت‌نام وارد کنید.", "email": "لطفاً یک آدرس ایمیل معتبر وارد کنید.", diff --git a/apps/user/locales/fi-FI/auth.json b/apps/user/locales/fi-FI/auth.json index adcba1d..5064a8b 100644 --- a/apps/user/locales/fi-FI/auth.json +++ b/apps/user/locales/fi-FI/auth.json @@ -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.", diff --git a/apps/user/locales/fr-FR/auth.json b/apps/user/locales/fr-FR/auth.json index 496617a..54dffd8 100644 --- a/apps/user/locales/fr-FR/auth.json +++ b/apps/user/locales/fr-FR/auth.json @@ -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.", diff --git a/apps/user/locales/hi-IN/auth.json b/apps/user/locales/hi-IN/auth.json index 7f80c61..fc47c6b 100644 --- a/apps/user/locales/hi-IN/auth.json +++ b/apps/user/locales/hi-IN/auth.json @@ -23,6 +23,7 @@ "mobile": "टेलीफोन" }, "orWithEmail": "या ईमेल का उपयोग करें", + "privacyPolicy": "गोपनीयता नीति", "register": { "description": "नया खाता बनाएं, पंजीकरण के लिए अपनी जानकारी भरें।", "email": "कृपया एक मान्य ईमेल पता दर्ज करें।", diff --git a/apps/user/locales/hu-HU/auth.json b/apps/user/locales/hu-HU/auth.json index c0dc47c..4320222 100644 --- a/apps/user/locales/hu-HU/auth.json +++ b/apps/user/locales/hu-HU/auth.json @@ -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.", diff --git a/apps/user/locales/ja-JP/auth.json b/apps/user/locales/ja-JP/auth.json index 7c65ec6..e86934c 100644 --- a/apps/user/locales/ja-JP/auth.json +++ b/apps/user/locales/ja-JP/auth.json @@ -23,6 +23,7 @@ "mobile": "電話" }, "orWithEmail": "またはメールを使用", + "privacyPolicy": "プライバシーポリシー", "register": { "description": "新しいアカウントを作成し、情報を入力して登録してください。", "email": "有効なメールアドレスを入力してください。", diff --git a/apps/user/locales/ko-KR/auth.json b/apps/user/locales/ko-KR/auth.json index 5cf192d..ddaba9b 100644 --- a/apps/user/locales/ko-KR/auth.json +++ b/apps/user/locales/ko-KR/auth.json @@ -23,6 +23,7 @@ "mobile": "전화" }, "orWithEmail": "또는 이메일 사용", + "privacyPolicy": "개인정보 처리방침", "register": { "description": "새 계정을 생성하고 정보를 입력하여 등록하세요.", "email": "유효한 이메일 주소를 입력해 주세요.", diff --git a/apps/user/locales/no-NO/auth.json b/apps/user/locales/no-NO/auth.json index 6fe80b2..7434cb9 100644 --- a/apps/user/locales/no-NO/auth.json +++ b/apps/user/locales/no-NO/auth.json @@ -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.", diff --git a/apps/user/locales/pl-PL/auth.json b/apps/user/locales/pl-PL/auth.json index b9cf2eb..a4ea24b 100644 --- a/apps/user/locales/pl-PL/auth.json +++ b/apps/user/locales/pl-PL/auth.json @@ -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.", diff --git a/apps/user/locales/pt-BR/auth.json b/apps/user/locales/pt-BR/auth.json index 2669cc3..1c13bf0 100644 --- a/apps/user/locales/pt-BR/auth.json +++ b/apps/user/locales/pt-BR/auth.json @@ -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.", diff --git a/apps/user/locales/ro-RO/auth.json b/apps/user/locales/ro-RO/auth.json index 89f7029..0c0a2e0 100644 --- a/apps/user/locales/ro-RO/auth.json +++ b/apps/user/locales/ro-RO/auth.json @@ -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ă.", diff --git a/apps/user/locales/ru-RU/auth.json b/apps/user/locales/ru-RU/auth.json index 3237ea3..f7a26c9 100644 --- a/apps/user/locales/ru-RU/auth.json +++ b/apps/user/locales/ru-RU/auth.json @@ -23,6 +23,7 @@ "mobile": "Телефон" }, "orWithEmail": "или с помощью электронной почты", + "privacyPolicy": "Политика конфиденциальности", "register": { "description": "Создайте новый аккаунт, заполните свои данные для регистрации.", "email": "Пожалуйста, введите действительный адрес электронной почты.", diff --git a/apps/user/locales/th-TH/auth.json b/apps/user/locales/th-TH/auth.json index 828ff39..44bdf2b 100644 --- a/apps/user/locales/th-TH/auth.json +++ b/apps/user/locales/th-TH/auth.json @@ -23,6 +23,7 @@ "mobile": "โทรศัพท์" }, "orWithEmail": "หรือใช้ที่อยู่อีเมล", + "privacyPolicy": "นโยบายความเป็นส่วนตัว", "register": { "description": "สร้างบัญชีใหม่ กรอกข้อมูลของคุณเพื่อสมัครสมาชิก", "email": "กรุณากรอกที่อยู่อีเมลที่ถูกต้อง", diff --git a/apps/user/locales/tr-TR/auth.json b/apps/user/locales/tr-TR/auth.json index 658ee49..0c1d538 100644 --- a/apps/user/locales/tr-TR/auth.json +++ b/apps/user/locales/tr-TR/auth.json @@ -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.", diff --git a/apps/user/locales/uk-UA/auth.json b/apps/user/locales/uk-UA/auth.json index 9fe0006..358ef94 100644 --- a/apps/user/locales/uk-UA/auth.json +++ b/apps/user/locales/uk-UA/auth.json @@ -23,6 +23,7 @@ "mobile": "Телефон" }, "orWithEmail": "або використовуйте електронну пошту", + "privacyPolicy": "Політика конфіденційності", "register": { "description": "Створіть новий обліковий запис, заповніть ваші дані для реєстрації.", "email": "Будь ласка, введіть дійсну електронну адресу.", diff --git a/apps/user/locales/vi-VN/auth.json b/apps/user/locales/vi-VN/auth.json index 50f785e..7881b63 100644 --- a/apps/user/locales/vi-VN/auth.json +++ b/apps/user/locales/vi-VN/auth.json @@ -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ệ.", diff --git a/apps/user/locales/zh-CN/auth.json b/apps/user/locales/zh-CN/auth.json index 0adc10b..29599be 100644 --- a/apps/user/locales/zh-CN/auth.json +++ b/apps/user/locales/zh-CN/auth.json @@ -23,6 +23,7 @@ "mobile": "电话" }, "orWithEmail": "或使用邮箱", + "privacyPolicy": "隐私政策", "register": { "description": "创建新账户,填写您的信息以注册。", "email": "请输入有效的电子邮件地址。", diff --git a/apps/user/locales/zh-HK/auth.json b/apps/user/locales/zh-HK/auth.json index 22f9929..8d16a20 100644 --- a/apps/user/locales/zh-HK/auth.json +++ b/apps/user/locales/zh-HK/auth.json @@ -23,6 +23,7 @@ "mobile": "電話" }, "orWithEmail": "或使用電子郵件", + "privacyPolicy": "私隱政策", "register": { "description": "建立新帳戶,填寫您的資訊以註冊。", "email": "請輸入有效的電郵地址。", diff --git a/apps/user/services/common/common.ts b/apps/user/services/common/common.ts index d200045..685ef9c 100644 --- a/apps/user/services/common/common.ts +++ b/apps/user/services/common/common.ts @@ -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('/v1/common/site/privacy', { + method: 'GET', + ...(options || {}), + }); +} + /** Get stat GET /v1/common/site/stat */ export async function getStat(options?: { [key: string]: any }) { return request('/v1/common/site/stat', { diff --git a/apps/user/services/common/oauth.ts b/apps/user/services/common/oauth.ts index 17e493f..ff6a4c0 100644 --- a/apps/user/services/common/oauth.ts +++ b/apps/user/services/common/oauth.ts @@ -32,6 +32,7 @@ export async function appleLoginCallback( return request('/v1/auth/oauth/callback/apple', { method: 'POST', data: formData, + requestType: 'form', ...(options || {}), }); } diff --git a/apps/user/services/common/typings.d.ts b/apps/user/services/common/typings.d.ts index 7d3974f..eca8fca 100644 --- a/apps/user/services/common/typings.d.ts +++ b/apps/user/services/common/typings.d.ts @@ -309,6 +309,10 @@ declare namespace API { enable: boolean; }; + type PrivacyPolicyConfig = { + privacy_policy: string; + }; + type PubilcRegisterConfig = { stop_register: boolean; enable_ip_register_limit: boolean; diff --git a/apps/user/services/user/typings.d.ts b/apps/user/services/user/typings.d.ts index 5990d21..215938b 100644 --- a/apps/user/services/user/typings.d.ts +++ b/apps/user/services/user/typings.d.ts @@ -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; diff --git a/apps/user/utils/common.ts b/apps/user/utils/common.ts index de8ca20..28ac162 100644 --- a/apps/user/utils/common.ts +++ b/apps/user/utils/common.ts @@ -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`; }