diff --git a/apps/admin/app/dashboard/auth-control/general/page.tsx b/apps/admin/app/dashboard/auth-control/general/page.tsx index f29cfc5..c651191 100644 --- a/apps/admin/app/dashboard/auth-control/general/page.tsx +++ b/apps/admin/app/dashboard/auth-control/general/page.tsx @@ -3,13 +3,15 @@ import { Invite } from './invite'; import { Register } from './register'; import { Verify } from './verify'; +import { VerifyCode } from './verify-code'; export default function Page() { return (
- - + + +
); } diff --git a/apps/admin/app/dashboard/auth-control/general/verify-code.tsx b/apps/admin/app/dashboard/auth-control/general/verify-code.tsx new file mode 100644 index 0000000..c41213e --- /dev/null +++ b/apps/admin/app/dashboard/auth-control/general/verify-code.tsx @@ -0,0 +1,95 @@ +'use client'; + +import { getVerifyCodeConfig, updateVerifyCodeConfig } from '@/services/admin/system'; +import { useQuery } from '@tanstack/react-query'; +import { Card, CardContent, CardHeader, CardTitle } from '@workspace/ui/components/card'; +import { Label } from '@workspace/ui/components/label'; +import { Table, TableBody, TableCell, TableRow } from '@workspace/ui/components/table'; +import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input'; +import { useTranslations } from 'next-intl'; +import { toast } from 'sonner'; + +export function VerifyCode() { + const t = useTranslations('auth-control.verify-code'); + + const { data, refetch } = useQuery({ + queryKey: ['getVerifyCodeConfig'], + queryFn: async () => { + const { data } = await getVerifyCodeConfig(); + return data.data; + }, + }); + + async function updateConfig(key: string, value: unknown) { + if (data?.[key] === value) return; + try { + await updateVerifyCodeConfig({ + ...data, + [key]: value, + } as API.VerifyCodeConfig); + toast.success(t('saveSuccess')); + refetch(); + } catch (error) { + /* empty */ + } + } + + return ( + + + {t('verifyCodeSettings')} + + + + + + + +

{t('expireTimeDescription')}

+
+ + updateConfig('verify_code_expire_time', Number(value))} + suffix={t('minute')} + /> + +
+ + + +

{t('intervalDescription')}

+
+ + updateConfig('verify_code_interval', Number(value))} + suffix={t('second')} + /> + +
+ + + +

{t('dailyLimitDescription')}

+
+ + updateConfig('verify_code_limit', Number(value))} + suffix={t('times')} + /> + +
+
+
+
+
+ ); +} diff --git a/apps/admin/app/dashboard/auth-control/phone/page.tsx b/apps/admin/app/dashboard/auth-control/phone/page.tsx index 8f469c5..ec7e241 100644 --- a/apps/admin/app/dashboard/auth-control/phone/page.tsx +++ b/apps/admin/app/dashboard/auth-control/phone/page.tsx @@ -96,71 +96,6 @@ export default function Page() { /> - - - -

{t('expireTimeTip')}

-
- - - updateConfig('config', { - ...data?.config, - expire_time: value, - }) - } - suffix='S' - disabled={isFetching} - placeholder={t('placeholders.expireTime')} - /> - -
- - - -

{t('intervalTip')}

-
- - - updateConfig('config', { - ...data?.config, - interval: value, - }) - } - suffix='S' - disabled={isFetching} - placeholder={t('placeholders.interval')} - /> - -
- - - -

{t('limitTip')}

-
- - - updateConfig('config', { - ...data?.config, - limit: value, - }) - } - disabled={isFetching} - placeholder={t('placeholders.limit')} - /> - -
diff --git a/apps/admin/app/dashboard/server/node-config.tsx b/apps/admin/app/dashboard/server/node-config.tsx index a82138e..0f15309 100644 --- a/apps/admin/app/dashboard/server/node-config.tsx +++ b/apps/admin/app/dashboard/server/node-config.tsx @@ -35,7 +35,7 @@ function getTimeRangeData(slots: API.TimePeriod[]) { .filter((slot) => slot.start_time && slot.end_time) .flatMap((slot) => { const [startH = 0, startM = 0] = slot.start_time.split(':').map(Number); - const [endH = 0, endM = 0] = slot?.end_time?.split(':').map(Number); + const [endH = 0, endM = 0] = slot?.end_time.split(':').map(Number); const start = startH * 60 + startM; let end = endH * 60 + endM; if (end < start) end += MINUTES_IN_DAY; @@ -117,7 +117,7 @@ export default function NodeConfig() { }, [timeSlots]); const chartConfig = useMemo(() => { - return chartTimeSlots.reduce( + return chartTimeSlots?.reduce( (acc, item, index) => { acc[item.name] = { label: item.name, diff --git a/apps/admin/app/dashboard/user/[id]/user-profile/notify-settings-form.tsx b/apps/admin/app/dashboard/user/[id]/user-profile/notify-settings-form.tsx index fe8cc82..4518ca7 100644 --- a/apps/admin/app/dashboard/user/[id]/user-profile/notify-settings-form.tsx +++ b/apps/admin/app/dashboard/user/[id]/user-profile/notify-settings-form.tsx @@ -12,8 +12,6 @@ import { toast } from 'sonner'; import * as z from 'zod'; const notifySettingsSchema = z.object({ - enable_email_notify: z.boolean(), - enable_telegram_notify: z.boolean(), enable_balance_notify: z.boolean(), enable_login_notify: z.boolean(), enable_subscribe_notify: z.boolean(), @@ -28,8 +26,6 @@ export function NotifySettingsForm({ user }: { user: API.User }) { const form = useForm({ resolver: zodResolver(notifySettingsSchema), defaultValues: { - enable_email_notify: user.enable_email_notify, - enable_telegram_notify: user.enable_telegram_notify, enable_balance_notify: user.enable_balance_notify, enable_login_notify: user.enable_login_notify, enable_subscribe_notify: user.enable_subscribe_notify, @@ -57,32 +53,6 @@ export function NotifySettingsForm({ user }: { user: API.User }) {
- ( - - {t('emailNotifications')} - - - - - )} - /> - - ( - - {t('telegramNotifications')} - - - - - )} - /> - ((set) => ({ register: { stop_register: false, enable_trial: false, + trial_subscribe: 0, + trial_time: 0, + trial_time_unit: '', enable_ip_register_limit: false, ip_register_limit: 0, ip_register_limit_duration: 0, @@ -48,8 +51,8 @@ export const useGlobalStore = create((set) => ({ only_first_purchase: false, }, currency: { - currency_unit: '', - currency_symbol: '', + currency_unit: 'USD', + currency_symbol: '$', }, subscribe: { single_model: false, @@ -57,6 +60,11 @@ export const useGlobalStore = create((set) => ({ subscribe_domain: '', pan_domain: false, }, + verify_code: { + verify_code_expire_time: 5, + verify_code_limit: 15, + verify_code_interval: 60, + }, oauth_methods: [], }, user: undefined, diff --git a/apps/admin/locales/cs-CZ/auth-control.json b/apps/admin/locales/cs-CZ/auth-control.json index d3653f0..a727b32 100644 --- a/apps/admin/locales/cs-CZ/auth-control.json +++ b/apps/admin/locales/cs-CZ/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Tajný klíč turniketu poskytovaný Cloudflare", "turnstileSiteKeyDescription": "Klíč pro web turniketu poskytovaný Cloudflare", "verifySettings": "Nastavení ověření" + }, + "verify-code": { + "dailyLimit": "Denní limit", + "dailyLimitDescription": "Maximální počet ověřovacích kódů, které lze odeslat za den", + "expireTime": "Čas vypršení", + "expireTimeDescription": "Doba platnosti ověřovacího kódu (minuty)", + "interval": "Interval odesílání", + "intervalDescription": "Minimální interval mezi odesíláním ověřovacích kódů (sekundy)", + "minute": "minuty", + "saveSuccess": "Uložení úspěšné", + "second": "sekundy", + "times": "krát", + "verifyCodeSettings": "Nastavení ověřovacího kódu" } } diff --git a/apps/admin/locales/cs-CZ/phone.json b/apps/admin/locales/cs-CZ/phone.json index 7b36f11..ca91cf6 100644 --- a/apps/admin/locales/cs-CZ/phone.json +++ b/apps/admin/locales/cs-CZ/phone.json @@ -4,18 +4,9 @@ "enable": "Povolit", "enableTip": "Po povolení budou povoleny funkce registrace, přihlášení, připojení a odpojení mobilního telefonu", "endpointLabel": "Koncový bod", - "expireTime": "Čas vypršení", - "expireTimeTip": "Doba platnosti ověřovacího kódu SMS (v sekundách)", - "interval": "Interval", - "intervalTip": "Interval odesílání SMS ověřovacího kódu pro stejné telefonní číslo (v sekundách), 0 znamená bez omezení", - "limit": "Denní limit", - "limitTip": "Denní limit pro odesílání ověřovacích SMS kódů na stejné telefonní číslo, 0 znamená bez omezení", "logs": "Protokoly", "phoneNumberLabel": "Telefonní číslo", "placeholders": { - "expireTime": "Zadejte dobu vypršení, výchozí je 300", - "interval": "Zadejte interval, výchozí je 60", - "limit": "Zadejte denní limit, výchozí je 20", "template": "Váš ověřovací kód je {code}, platný po dobu 5 minut", "templateCode": "Zadejte kód šablony" }, diff --git a/apps/admin/locales/cs-CZ/user.json b/apps/admin/locales/cs-CZ/user.json index f2e30d1..944bf09 100644 --- a/apps/admin/locales/cs-CZ/user.json +++ b/apps/admin/locales/cs-CZ/user.json @@ -39,7 +39,6 @@ "editSubscription": "Upravit předplatné", "editUser": "Upravit uživatele", "email": "e-mail", - "emailNotifications": "E-mailová oznámení", "enable": "Povolit", "expireTime": "Čas vypršení", "expiredAt": "Platnost vypršela", @@ -82,7 +81,6 @@ "subscriptionName": "Název předplatného", "subscriptionNotifications": "Oznámení o předplatném", "success": "Úspěch", - "telegramNotifications": "Telegram oznámení", "telephone": "Telefonní číslo", "telephonePlaceholder": "Zadejte telefonní číslo", "time": "Čas", diff --git a/apps/admin/locales/de-DE/auth-control.json b/apps/admin/locales/de-DE/auth-control.json index 6bb1041..eb0e9de 100644 --- a/apps/admin/locales/de-DE/auth-control.json +++ b/apps/admin/locales/de-DE/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Turnstile-Geheimschlüssel, bereitgestellt von Cloudflare", "turnstileSiteKeyDescription": "Turnstile-Seitenschlüssel, bereitgestellt von Cloudflare", "verifySettings": "Überprüfungseinstellungen" + }, + "verify-code": { + "dailyLimit": "Tägliches Limit", + "dailyLimitDescription": "Maximale Anzahl von Bestätigungscodes, die pro Tag gesendet werden können", + "expireTime": "Ablaufzeit", + "expireTimeDescription": "Ablaufzeit des Bestätigungscodes (Minuten)", + "interval": "Sendeintervall", + "intervalDescription": "Minimales Intervall zwischen dem Versenden von Bestätigungscodes (Sekunden)", + "minute": "Minuten", + "saveSuccess": "Erfolgreich gespeichert", + "second": "Sekunden", + "times": "Mal", + "verifyCodeSettings": "Einstellungen für den Bestätigungscode" } } diff --git a/apps/admin/locales/de-DE/phone.json b/apps/admin/locales/de-DE/phone.json index d9ef0bf..a41ed87 100644 --- a/apps/admin/locales/de-DE/phone.json +++ b/apps/admin/locales/de-DE/phone.json @@ -4,18 +4,9 @@ "enable": "Aktivieren", "enableTip": "Nach der Aktivierung werden die Funktionen zur Registrierung, Anmeldung, Bindung und Entbindung von Mobiltelefonen aktiviert", "endpointLabel": "Endpunkt", - "expireTime": "Ablaufzeit", - "expireTimeTip": "Gültigkeitsdauer des SMS-Bestätigungscodes (Sekunden)", - "interval": "Intervall", - "intervalTip": "SMS-Bestätigungscode-Sendeintervall für dieselbe Telefonnummer (Sekunden), 0 bedeutet keine Begrenzung", - "limit": "Tageslimit", - "limitTip": "Tägliches Limit für das Senden von SMS-Verifizierungscodes an dieselbe Telefonnummer, 0 bedeutet kein Limit", "logs": "Protokolle", "phoneNumberLabel": "Telefonnummer", "placeholders": { - "expireTime": "Geben Sie die Ablaufzeit ein, Standard ist 300", - "interval": "Geben Sie das Intervall ein, Standard ist 60", - "limit": "Geben Sie das tägliche Limit ein, Standard ist 20", "template": "Ihr Bestätigungscode ist {code}, gültig für 5 Minuten", "templateCode": "Geben Sie den Vorlagen-Code ein" }, diff --git a/apps/admin/locales/de-DE/user.json b/apps/admin/locales/de-DE/user.json index b01967e..daa84a4 100644 --- a/apps/admin/locales/de-DE/user.json +++ b/apps/admin/locales/de-DE/user.json @@ -39,7 +39,6 @@ "editSubscription": "Abonnement bearbeiten", "editUser": "Benutzer bearbeiten", "email": "E-Mail", - "emailNotifications": "E-Mail-Benachrichtigungen", "enable": "Aktivieren", "expireTime": "Ablaufzeit", "expiredAt": "Abgelaufen am", @@ -82,7 +81,6 @@ "subscriptionName": "Abonnementname", "subscriptionNotifications": "Abonnement-Benachrichtigungen", "success": "Erfolg", - "telegramNotifications": "Telegram-Benachrichtigungen", "telephone": "Telefonnummer", "telephonePlaceholder": "Telefonnummer eingeben", "time": "Zeit", diff --git a/apps/admin/locales/en-US/auth-control.json b/apps/admin/locales/en-US/auth-control.json index 7cc4d5d..38f1efe 100644 --- a/apps/admin/locales/en-US/auth-control.json +++ b/apps/admin/locales/en-US/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Turnstile secret key provided by Cloudflare", "turnstileSiteKeyDescription": "Turnstile site key provided by Cloudflare", "verifySettings": "Verify Settings" + }, + "verify-code": { + "dailyLimit": "Daily Limit", + "dailyLimitDescription": "Maximum number of verification codes that can be sent per day", + "expireTime": "Expire Time", + "expireTimeDescription": "Verification code expiration time (minutes)", + "interval": "Send Interval", + "intervalDescription": "Minimum interval between sending verification codes (seconds)", + "minute": "minutes", + "saveSuccess": "Save Successful", + "second": "seconds", + "times": "times", + "verifyCodeSettings": "Verification Code Settings" } } diff --git a/apps/admin/locales/en-US/phone.json b/apps/admin/locales/en-US/phone.json index ad79788..5d7966c 100644 --- a/apps/admin/locales/en-US/phone.json +++ b/apps/admin/locales/en-US/phone.json @@ -4,18 +4,9 @@ "enable": "Enable", "enableTip": "After enabling, mobile phone registration, login, binding, and unbinding functions will be enabled", "endpointLabel": "Endpoint", - "expireTime": "Expire Time", - "expireTimeTip": "SMS verification code validity period (seconds)", - "interval": "Interval", - "intervalTip": "SMS verification code sending interval for the same phone number (seconds), 0 means no limit", - "limit": "Daily Limit", - "limitTip": "Daily SMS verification code sending limit for the same phone number, 0 means no limit", "logs": "Logs", "phoneNumberLabel": "Phone Number", "placeholders": { - "expireTime": "Enter expire time, default is 300", - "interval": "Enter interval time, default is 60", - "limit": "Enter daily limit, default is 20", "template": "Your verification code is {code}, valid for 5 minutes", "templateCode": "Enter template code" }, diff --git a/apps/admin/locales/en-US/user.json b/apps/admin/locales/en-US/user.json index b5d3ae1..2026af1 100644 --- a/apps/admin/locales/en-US/user.json +++ b/apps/admin/locales/en-US/user.json @@ -39,7 +39,6 @@ "editSubscription": "Edit Subscription", "editUser": "Edit User", "email": "Email", - "emailNotifications": "Email Notifications", "enable": "Enable", "expireTime": "Expire Time", "expiredAt": "Expired At", @@ -82,7 +81,6 @@ "subscriptionName": "Subscription Name", "subscriptionNotifications": "Subscription Notifications", "success": "Success", - "telegramNotifications": "Telegram Notifications", "telephone": "Phone Number", "telephonePlaceholder": "Enter phone number", "time": "Time", diff --git a/apps/admin/locales/es-ES/auth-control.json b/apps/admin/locales/es-ES/auth-control.json index 9e17be3..5165506 100644 --- a/apps/admin/locales/es-ES/auth-control.json +++ b/apps/admin/locales/es-ES/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Clave secreta de Turnstile proporcionada por Cloudflare", "turnstileSiteKeyDescription": "Clave del sitio de Turnstile proporcionada por Cloudflare", "verifySettings": "Configuración de Verificación" + }, + "verify-code": { + "dailyLimit": "Límite Diario", + "dailyLimitDescription": "Número máximo de códigos de verificación que se pueden enviar por día", + "expireTime": "Tiempo de Expiración", + "expireTimeDescription": "Tiempo de expiración del código de verificación (minutos)", + "interval": "Intervalo de Envío", + "intervalDescription": "Intervalo mínimo entre el envío de códigos de verificación (segundos)", + "minute": "minutos", + "saveSuccess": "Guardado Exitoso", + "second": "segundos", + "times": "veces", + "verifyCodeSettings": "Configuración del Código de Verificación" } } diff --git a/apps/admin/locales/es-ES/phone.json b/apps/admin/locales/es-ES/phone.json index f9f4144..76320c0 100644 --- a/apps/admin/locales/es-ES/phone.json +++ b/apps/admin/locales/es-ES/phone.json @@ -4,18 +4,9 @@ "enable": "Habilitar", "enableTip": "Después de habilitar, se activarán las funciones de registro, inicio de sesión, vinculación y desvinculación del teléfono móvil", "endpointLabel": "Punto final", - "expireTime": "Tiempo de Expiración", - "expireTimeTip": "Periodo de validez del código de verificación por SMS (segundos)", - "interval": "Intervalo", - "intervalTip": "Intervalo de envío del código de verificación por SMS para el mismo número de teléfono (segundos), 0 significa sin límite", - "limit": "Límite Diario", - "limitTip": "Límite diario de envío de códigos de verificación por SMS para el mismo número de teléfono, 0 significa sin límite", "logs": "Registros", "phoneNumberLabel": "Número de Teléfono", "placeholders": { - "expireTime": "Ingrese el tiempo de expiración, el valor predeterminado es 300", - "interval": "Ingrese el tiempo de intervalo, el valor predeterminado es 60", - "limit": "Ingrese el límite diario, el valor predeterminado es 20", "template": "Su código de verificación es {code}, válido por 5 minutos", "templateCode": "Ingrese el código de la plantilla" }, diff --git a/apps/admin/locales/es-ES/user.json b/apps/admin/locales/es-ES/user.json index 1415e07..561a182 100644 --- a/apps/admin/locales/es-ES/user.json +++ b/apps/admin/locales/es-ES/user.json @@ -39,7 +39,6 @@ "editSubscription": "Editar suscripción", "editUser": "Editar usuario", "email": "correo electrónico", - "emailNotifications": "Notificaciones por correo electrónico", "enable": "Habilitar", "expireTime": "Tiempo de Expiración", "expiredAt": "Fecha de vencimiento", @@ -82,7 +81,6 @@ "subscriptionName": "Nombre de la Suscripción", "subscriptionNotifications": "Notificaciones de suscripción", "success": "Éxito", - "telegramNotifications": "Notificaciones de Telegram", "telephone": "Número de Teléfono", "telephonePlaceholder": "Ingrese número de teléfono", "time": "Hora", diff --git a/apps/admin/locales/es-MX/auth-control.json b/apps/admin/locales/es-MX/auth-control.json index decade4..78cd140 100644 --- a/apps/admin/locales/es-MX/auth-control.json +++ b/apps/admin/locales/es-MX/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Clave secreta de Turnstile proporcionada por Cloudflare", "turnstileSiteKeyDescription": "Clave del sitio de Turnstile proporcionada por Cloudflare", "verifySettings": "Configuración de Verificación" + }, + "verify-code": { + "dailyLimit": "Límite Diario", + "dailyLimitDescription": "Número máximo de códigos de verificación que se pueden enviar por día", + "expireTime": "Tiempo de Expiración", + "expireTimeDescription": "Tiempo de expiración del código de verificación (minutos)", + "interval": "Intervalo de Envío", + "intervalDescription": "Intervalo mínimo entre el envío de códigos de verificación (segundos)", + "minute": "minutos", + "saveSuccess": "Guardado Exitoso", + "second": "segundos", + "times": "veces", + "verifyCodeSettings": "Configuración del Código de Verificación" } } diff --git a/apps/admin/locales/es-MX/phone.json b/apps/admin/locales/es-MX/phone.json index dcd7f77..4fe002d 100644 --- a/apps/admin/locales/es-MX/phone.json +++ b/apps/admin/locales/es-MX/phone.json @@ -4,18 +4,9 @@ "enable": "Habilitar", "enableTip": "Después de habilitar, se activarán las funciones de registro, inicio de sesión, vinculación y desvinculación del teléfono móvil", "endpointLabel": "Punto final", - "expireTime": "Tiempo de Expiración", - "expireTimeTip": "Periodo de validez del código de verificación por SMS (segundos)", - "interval": "Intervalo", - "intervalTip": "Intervalo de envío del código de verificación por SMS para el mismo número de teléfono (segundos), 0 significa sin límite", - "limit": "Límite Diario", - "limitTip": "Límite diario de envío de códigos de verificación por SMS para el mismo número de teléfono, 0 significa sin límite", "logs": "Registros", "phoneNumberLabel": "Número de Teléfono", "placeholders": { - "expireTime": "Ingrese el tiempo de expiración, el valor predeterminado es 300", - "interval": "Ingrese el tiempo de intervalo, el valor predeterminado es 60", - "limit": "Ingrese el límite diario, el valor predeterminado es 20", "template": "Su código de verificación es {code}, válido por 5 minutos", "templateCode": "Ingrese el código de la plantilla" }, diff --git a/apps/admin/locales/es-MX/user.json b/apps/admin/locales/es-MX/user.json index f33a0c5..cca52b2 100644 --- a/apps/admin/locales/es-MX/user.json +++ b/apps/admin/locales/es-MX/user.json @@ -39,7 +39,6 @@ "editSubscription": "Editar Suscripción", "editUser": "Editar usuario", "email": "correo electrónico", - "emailNotifications": "Notificaciones por Correo Electrónico", "enable": "Habilitar", "expireTime": "Tiempo de Expiración", "expiredAt": "Fecha de vencimiento", @@ -82,7 +81,6 @@ "subscriptionName": "Nombre de la Suscripción", "subscriptionNotifications": "Notificaciones de Suscripción", "success": "Éxito", - "telegramNotifications": "Notificaciones de Telegram", "telephone": "Número de Teléfono", "telephonePlaceholder": "Ingrese número de teléfono", "time": "Hora", diff --git a/apps/admin/locales/fa-IR/auth-control.json b/apps/admin/locales/fa-IR/auth-control.json index f1ec040..93f23f1 100644 --- a/apps/admin/locales/fa-IR/auth-control.json +++ b/apps/admin/locales/fa-IR/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "کلید مخفی ترنستایل ارائه شده توسط Cloudflare", "turnstileSiteKeyDescription": "کلید سایت ترنستایل ارائه شده توسط Cloudflare", "verifySettings": "تنظیمات تأیید" + }, + "verify-code": { + "dailyLimit": "حداکثر روزانه", + "dailyLimitDescription": "حداکثر تعداد کدهای تأیید که می‌توان در روز ارسال کرد", + "expireTime": "زمان انقضا", + "expireTimeDescription": "زمان انقضای کد تأیید (دقیقه)", + "interval": "فاصله ارسال", + "intervalDescription": "حداقل فاصله بین ارسال کدهای تأیید (ثانیه)", + "minute": "دقیقه", + "saveSuccess": "ذخیره با موفقیت", + "second": "ثانیه", + "times": "بار", + "verifyCodeSettings": "تنظیمات کد تأیید" } } diff --git a/apps/admin/locales/fa-IR/phone.json b/apps/admin/locales/fa-IR/phone.json index 24f446c..201989c 100644 --- a/apps/admin/locales/fa-IR/phone.json +++ b/apps/admin/locales/fa-IR/phone.json @@ -4,18 +4,9 @@ "enable": "فعال کردن", "enableTip": "پس از فعال‌سازی، عملکردهای ثبت‌نام، ورود، اتصال و قطع اتصال تلفن همراه فعال خواهند شد", "endpointLabel": "نقطه پایانی", - "expireTime": "زمان انقضا", - "expireTimeTip": "مدت اعتبار کد تأیید پیامکی (ثانیه)", - "interval": "فاصله زمانی", - "intervalTip": "فاصله زمانی ارسال کد تأیید پیامکی برای همان شماره تلفن (ثانیه)، 0 به معنای بدون محدودیت است", - "limit": "محدودیت روزانه", - "limitTip": "محدودیت ارسال کد تأییدیه پیامکی روزانه برای همان شماره تلفن، ۰ به معنای بدون محدودیت است", "logs": "لاگ‌ها", "phoneNumberLabel": "شماره تلفن", "placeholders": { - "expireTime": "زمان انقضا را وارد کنید، پیش‌فرض ۳۰۰ است", - "interval": "زمان فاصله را وارد کنید، پیش‌فرض ۶۰ است", - "limit": "محدودیت روزانه را وارد کنید، پیش‌فرض ۲۰ است", "template": "کد تأیید شما {code} است و به مدت ۵ دقیقه معتبر است", "templateCode": "کد قالب را وارد کنید" }, diff --git a/apps/admin/locales/fa-IR/user.json b/apps/admin/locales/fa-IR/user.json index d2f4876..59cb1b6 100644 --- a/apps/admin/locales/fa-IR/user.json +++ b/apps/admin/locales/fa-IR/user.json @@ -39,7 +39,6 @@ "editSubscription": "ویرایش اشتراک", "editUser": "ویرایش کاربر", "email": "ایمیل", - "emailNotifications": "اعلان‌های ایمیل", "enable": "فعال کردن", "expireTime": "زمان انقضا", "expiredAt": "منقضی شده در", @@ -82,7 +81,6 @@ "subscriptionName": "نام اشتراک", "subscriptionNotifications": "اعلان‌های اشتراک", "success": "موفقیت", - "telegramNotifications": "اعلان‌های تلگرام", "telephone": "شماره تلفن", "telephonePlaceholder": "شماره تلفن را وارد کنید", "time": "زمان", diff --git a/apps/admin/locales/fi-FI/auth-control.json b/apps/admin/locales/fi-FI/auth-control.json index ed16d71..3ffcddd 100644 --- a/apps/admin/locales/fi-FI/auth-control.json +++ b/apps/admin/locales/fi-FI/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Turnstile-salaisavain, jonka Cloudflare on toimittanut", "turnstileSiteKeyDescription": "Turnstile-sivuston avain, jonka Cloudflare on toimittanut", "verifySettings": "Vahvistusasetukset" + }, + "verify-code": { + "dailyLimit": "Päivittäinen raja", + "dailyLimitDescription": "Suurin määrä vahvistuskoodien lähettämistä päivässä", + "expireTime": "Voimassaoloaika", + "expireTimeDescription": "Vahvistuskoodin voimassaoloaika (minuutteina)", + "interval": "Lähetysväli", + "intervalDescription": "Minimi väli vahvistuskoodien lähettämisen välillä (sekunteina)", + "minute": "minuuttia", + "saveSuccess": "Tallennus onnistui", + "second": "sekuntia", + "times": "kertaa", + "verifyCodeSettings": "Vahvistuskoodin asetukset" } } diff --git a/apps/admin/locales/fi-FI/phone.json b/apps/admin/locales/fi-FI/phone.json index d8b53b2..f86ffe8 100644 --- a/apps/admin/locales/fi-FI/phone.json +++ b/apps/admin/locales/fi-FI/phone.json @@ -4,18 +4,9 @@ "enable": "Ota käyttöön", "enableTip": "Kun otat tämän käyttöön, matkapuhelimen rekisteröinti-, kirjautumis-, sitomis- ja purkutoiminnot otetaan käyttöön", "endpointLabel": "Päätepiste", - "expireTime": "Vanhentumisaika", - "expireTimeTip": "Tekstiviestivarmennuskoodin voimassaoloaika (sekunteina)", - "interval": "Aikaväli", - "intervalTip": "Saman puhelinnumeron SMS-varmistuskoodin lähetysväli (sekunteina), 0 tarkoittaa ei rajoitusta", - "limit": "Päivittäinen raja", - "limitTip": "Päivittäinen tekstiviestivarmistuskoodin lähetysraja samalle puhelinnumerolle, 0 tarkoittaa ei rajoitusta", "logs": "Lokit", "phoneNumberLabel": "Puhelinnumero", "placeholders": { - "expireTime": "Syötä vanhentumisaika, oletus on 300", - "interval": "Anna aikaväli, oletus on 60", - "limit": "Anna päivittäinen raja, oletus on 20", "template": "Vahvistuskoodisi on {code}, voimassa 5 minuuttia", "templateCode": "Anna mallikoodi" }, diff --git a/apps/admin/locales/fi-FI/user.json b/apps/admin/locales/fi-FI/user.json index 0649a83..4d59668 100644 --- a/apps/admin/locales/fi-FI/user.json +++ b/apps/admin/locales/fi-FI/user.json @@ -39,7 +39,6 @@ "editSubscription": "Muokkaa tilausta", "editUser": "Muokkaa käyttäjää", "email": "sähköposti", - "emailNotifications": "Sähköposti-ilmoitukset", "enable": "Ota käyttöön", "expireTime": "Vanhentumisaika", "expiredAt": "Vanhentunut", @@ -82,7 +81,6 @@ "subscriptionName": "Tilauksen nimi", "subscriptionNotifications": "Tilausilmoitukset", "success": "Onnistuminen", - "telegramNotifications": "Telegram-ilmoitukset", "telephone": "Puhelinnumero", "telephonePlaceholder": "Syötä puhelinnumero", "time": "Aika", diff --git a/apps/admin/locales/fr-FR/auth-control.json b/apps/admin/locales/fr-FR/auth-control.json index e14ec0f..16acdaa 100644 --- a/apps/admin/locales/fr-FR/auth-control.json +++ b/apps/admin/locales/fr-FR/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Clé secrète de tourniquet fournie par Cloudflare", "turnstileSiteKeyDescription": "Clé de site de tourniquet fournie par Cloudflare", "verifySettings": "Paramètres de vérification" + }, + "verify-code": { + "dailyLimit": "Limite quotidienne", + "dailyLimitDescription": "Nombre maximum de codes de vérification pouvant être envoyés par jour", + "expireTime": "Temps d'expiration", + "expireTimeDescription": "Temps d'expiration du code de vérification (minutes)", + "interval": "Intervalle d'envoi", + "intervalDescription": "Intervalle minimum entre l'envoi des codes de vérification (secondes)", + "minute": "minutes", + "saveSuccess": "Enregistrement réussi", + "second": "secondes", + "times": "fois", + "verifyCodeSettings": "Paramètres du code de vérification" } } diff --git a/apps/admin/locales/fr-FR/phone.json b/apps/admin/locales/fr-FR/phone.json index 5b283ef..2342122 100644 --- a/apps/admin/locales/fr-FR/phone.json +++ b/apps/admin/locales/fr-FR/phone.json @@ -4,18 +4,9 @@ "enable": "Activer", "enableTip": "Après activation, les fonctions d'enregistrement, de connexion, de liaison et de déliaison par téléphone mobile seront activées", "endpointLabel": "Point de terminaison", - "expireTime": "Date d'expiration", - "expireTimeTip": "Période de validité du code de vérification par SMS (secondes)", - "interval": "Intervalle", - "intervalTip": "Intervalle d'envoi du code de vérification par SMS pour le même numéro de téléphone (secondes), 0 signifie aucune limite", - "limit": "Limite quotidienne", - "limitTip": "Limite quotidienne d'envoi de code de vérification par SMS pour le même numéro de téléphone, 0 signifie aucune limite", "logs": "Journaux", "phoneNumberLabel": "Numéro de téléphone", "placeholders": { - "expireTime": "Entrez le temps d'expiration, par défaut 300", - "interval": "Entrez le temps d'intervalle, par défaut 60", - "limit": "Entrez la limite quotidienne, par défaut 20", "template": "Votre code de vérification est {code}, valable pendant 5 minutes", "templateCode": "Entrez le code du modèle" }, diff --git a/apps/admin/locales/fr-FR/user.json b/apps/admin/locales/fr-FR/user.json index 2287876..a92be39 100644 --- a/apps/admin/locales/fr-FR/user.json +++ b/apps/admin/locales/fr-FR/user.json @@ -39,7 +39,6 @@ "editSubscription": "Modifier l'abonnement", "editUser": "Modifier l'utilisateur", "email": "e-mail", - "emailNotifications": "Notifications par e-mail", "enable": "Activer", "expireTime": "Date d'expiration", "expiredAt": "Expiré le", @@ -82,7 +81,6 @@ "subscriptionName": "Nom de l'abonnement", "subscriptionNotifications": "Notifications d'abonnement", "success": "Succès", - "telegramNotifications": "Notifications Telegram", "telephone": "Numéro de téléphone", "telephonePlaceholder": "Entrez le numéro de téléphone", "time": "Temps", diff --git a/apps/admin/locales/hi-IN/auth-control.json b/apps/admin/locales/hi-IN/auth-control.json index b95446b..3ab0d8d 100644 --- a/apps/admin/locales/hi-IN/auth-control.json +++ b/apps/admin/locales/hi-IN/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "क्लाउडफ्लेयर द्वारा प्रदान की गई टर्नस्टाइल गुप्त कुंजी", "turnstileSiteKeyDescription": "क्लाउडफ्लेयर द्वारा प्रदान की गई टर्नस्टाइल साइट कुंजी", "verifySettings": "सत्यापन सेटिंग्स" + }, + "verify-code": { + "dailyLimit": "दैनिक सीमा", + "dailyLimitDescription": "प्रति दिन भेजे जा सकने वाले अधिकतम सत्यापन कोड की संख्या", + "expireTime": "समाप्ति समय", + "expireTimeDescription": "सत्यापन कोड की समाप्ति का समय (मिनट)", + "interval": "भेजने का अंतराल", + "intervalDescription": "सत्यापन कोड भेजने के बीच का न्यूनतम अंतराल (सेकंड)", + "minute": "मिनट", + "saveSuccess": "सफलतापूर्वक सहेजा गया", + "second": "सेकंड", + "times": "बार", + "verifyCodeSettings": "सत्यापन कोड सेटिंग्स" } } diff --git a/apps/admin/locales/hi-IN/phone.json b/apps/admin/locales/hi-IN/phone.json index b827c29..ca00b5b 100644 --- a/apps/admin/locales/hi-IN/phone.json +++ b/apps/admin/locales/hi-IN/phone.json @@ -4,18 +4,9 @@ "enable": "सक्षम करें", "enableTip": "सक्षम करने के बाद, मोबाइल फोन पंजीकरण, लॉगिन, बाइंडिंग, और अनबाइंडिंग कार्यक्षमताएँ सक्षम हो जाएँगी", "endpointLabel": "अंतिम बिंदु", - "expireTime": "समाप्ति समय", - "expireTimeTip": "एसएमएस सत्यापन कोड की वैधता अवधि (सेकंड)", - "interval": "अंतराल", - "intervalTip": "उसी फोन नंबर के लिए एसएमएस सत्यापन कोड भेजने का अंतराल (सेकंड में), 0 का मतलब है कोई सीमा नहीं", - "limit": "दैनिक सीमा", - "limitTip": "उसी फोन नंबर के लिए दैनिक एसएमएस सत्यापन कोड भेजने की सीमा, 0 का मतलब कोई सीमा नहीं है", "logs": "लॉग्स", "phoneNumberLabel": "फोन नंबर", "placeholders": { - "expireTime": "समाप्ति समय दर्ज करें, डिफ़ॉल्ट 300 है", - "interval": "अंतराल समय दर्ज करें, डिफ़ॉल्ट 60 है", - "limit": "दैनिक सीमा दर्ज करें, डिफ़ॉल्ट 20 है", "template": "आपका सत्यापन कोड {code} है, 5 मिनट के लिए मान्य", "templateCode": "टेम्पलेट कोड दर्ज करें" }, diff --git a/apps/admin/locales/hi-IN/user.json b/apps/admin/locales/hi-IN/user.json index 29ec647..9fd1d10 100644 --- a/apps/admin/locales/hi-IN/user.json +++ b/apps/admin/locales/hi-IN/user.json @@ -39,7 +39,6 @@ "editSubscription": "सदस्यता संपादित करें", "editUser": "उपयोगकर्ता संपादित करें", "email": "ईमेल", - "emailNotifications": "ईमेल सूचनाएं", "enable": "सक्षम करें", "expireTime": "समाप्ति समय", "expiredAt": "समाप्ति तिथि", @@ -82,7 +81,6 @@ "subscriptionName": "सदस्यता नाम", "subscriptionNotifications": "सदस्यता सूचनाएं", "success": "सफलता", - "telegramNotifications": "टेलीग्राम सूचनाएं", "telephone": "फ़ोन नंबर", "telephonePlaceholder": "फ़ोन नंबर दर्ज करें", "time": "समय", diff --git a/apps/admin/locales/hu-HU/auth-control.json b/apps/admin/locales/hu-HU/auth-control.json index d5b8d55..9066576 100644 --- a/apps/admin/locales/hu-HU/auth-control.json +++ b/apps/admin/locales/hu-HU/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "A Cloudflare által biztosított forgókapu titkos kulcs", "turnstileSiteKeyDescription": "A Cloudflare által biztosított forgókapu webhely kulcs", "verifySettings": "Ellenőrzési beállítások" + }, + "verify-code": { + "dailyLimit": "Napi Korlát", + "dailyLimitDescription": "A naponta küldhető ellenőrző kódok maximális száma", + "expireTime": "Lejárati Idő", + "expireTimeDescription": "Az ellenőrző kód lejárati ideje (perc)", + "interval": "Küldési Intervallum", + "intervalDescription": "Minimum intervallum az ellenőrző kódok küldése között (másodperc)", + "minute": "perc", + "saveSuccess": "Mentés Sikeres", + "second": "másodperc", + "times": "alkalom", + "verifyCodeSettings": "Ellenőrző Kód Beállítások" } } diff --git a/apps/admin/locales/hu-HU/phone.json b/apps/admin/locales/hu-HU/phone.json index ad80cad..ec0d919 100644 --- a/apps/admin/locales/hu-HU/phone.json +++ b/apps/admin/locales/hu-HU/phone.json @@ -4,18 +4,9 @@ "enable": "Engedélyez", "enableTip": "A bekapcsolás után a mobiltelefon regisztráció, bejelentkezés, kötés és oldás funkciók elérhetővé válnak", "endpointLabel": "Végpont", - "expireTime": "Lejárati idő", - "expireTimeTip": "Az SMS ellenőrző kód érvényességi ideje (másodpercben)", - "interval": "Intervallum", - "intervalTip": "SMS ellenőrző kód küldési intervalluma ugyanarra a telefonszámra (másodpercben), 0 azt jelenti, hogy nincs korlátozás", - "limit": "Napi limit", - "limitTip": "Napi SMS ellenőrző kód küldési limit ugyanarra a telefonszámra, 0 azt jelenti, hogy nincs korlátozás", "logs": "Naplók", "phoneNumberLabel": "Telefonszám", "placeholders": { - "expireTime": "Adja meg a lejárati időt, alapértelmezett érték: 300", - "interval": "Adja meg az intervallum időt, alapértelmezett 60", - "limit": "Adja meg a napi limitet, alapértelmezett 20", "template": "Az Ön ellenőrző kódja {code}, érvényes 5 percig", "templateCode": "Adja meg a sablonkódot" }, diff --git a/apps/admin/locales/hu-HU/user.json b/apps/admin/locales/hu-HU/user.json index 6f9fe4a..0b09816 100644 --- a/apps/admin/locales/hu-HU/user.json +++ b/apps/admin/locales/hu-HU/user.json @@ -39,7 +39,6 @@ "editSubscription": "Előfizetés szerkesztése", "editUser": "Felhasználó szerkesztése", "email": "e-mail", - "emailNotifications": "Email értesítések", "enable": "Engedélyezés", "expireTime": "Lejárati idő", "expiredAt": "Lejárati dátum", @@ -82,7 +81,6 @@ "subscriptionName": "Előfizetés neve", "subscriptionNotifications": "Előfizetési értesítések", "success": "Siker", - "telegramNotifications": "Telegram értesítések", "telephone": "Telefonszám", "telephonePlaceholder": "Adja meg a telefonszámot", "time": "Idő", diff --git a/apps/admin/locales/ja-JP/auth-control.json b/apps/admin/locales/ja-JP/auth-control.json index f40f555..d61bf45 100644 --- a/apps/admin/locales/ja-JP/auth-control.json +++ b/apps/admin/locales/ja-JP/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Cloudflareが提供するターンスタイル秘密鍵", "turnstileSiteKeyDescription": "Cloudflareが提供するターンスタイルサイトキー", "verifySettings": "確認設定" + }, + "verify-code": { + "dailyLimit": "1日の制限", + "dailyLimitDescription": "1日に送信できる認証コードの最大数", + "expireTime": "有効期限", + "expireTimeDescription": "認証コードの有効期限(分)", + "interval": "送信間隔", + "intervalDescription": "認証コード送信の最小間隔(秒)", + "minute": "分", + "saveSuccess": "保存成功", + "second": "秒", + "times": "回", + "verifyCodeSettings": "認証コード設定" } } diff --git a/apps/admin/locales/ja-JP/phone.json b/apps/admin/locales/ja-JP/phone.json index d3833f4..c124fd7 100644 --- a/apps/admin/locales/ja-JP/phone.json +++ b/apps/admin/locales/ja-JP/phone.json @@ -4,18 +4,9 @@ "enable": "有効にする", "enableTip": "有効にすると、携帯電話の登録、ログイン、バインド、アンバインド機能が有効になります", "endpointLabel": "エンドポイント", - "expireTime": "有効期限", - "expireTimeTip": "SMS認証コードの有効期間(秒)", - "interval": "間隔", - "intervalTip": "同じ電話番号へのSMS認証コード送信間隔(秒)、0は制限なしを意味します", - "limit": "1日の制限", - "limitTip": "同一の電話番号に対する1日のSMS認証コード送信制限。0は制限なしを意味します。", "logs": "ログ", "phoneNumberLabel": "電話番号", "placeholders": { - "expireTime": "有効期限を入力してください。デフォルトは300です", - "interval": "間隔時間を入力してください。デフォルトは60です", - "limit": "1日の制限を入力してください。デフォルトは20です", "template": "あなたの認証コードは{code}です。5分間有効です", "templateCode": "テンプレートコードを入力してください" }, diff --git a/apps/admin/locales/ja-JP/user.json b/apps/admin/locales/ja-JP/user.json index 008ec81..a685989 100644 --- a/apps/admin/locales/ja-JP/user.json +++ b/apps/admin/locales/ja-JP/user.json @@ -39,7 +39,6 @@ "editSubscription": "サブスクリプションを編集", "editUser": "ユーザー編集", "email": "メールアドレス", - "emailNotifications": "メール通知", "enable": "有効", "expireTime": "有効期限", "expiredAt": "有効期限", @@ -82,7 +81,6 @@ "subscriptionName": "サブスクリプション名", "subscriptionNotifications": "サブスクリプション通知", "success": "成功", - "telegramNotifications": "Telegram通知", "telephone": "電話番号", "telephonePlaceholder": "電話番号を入力してください", "time": "時間", diff --git a/apps/admin/locales/ko-KR/auth-control.json b/apps/admin/locales/ko-KR/auth-control.json index cc79ced..de5c71f 100644 --- a/apps/admin/locales/ko-KR/auth-control.json +++ b/apps/admin/locales/ko-KR/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Cloudflare에서 제공하는 턴스타일 비밀 키", "turnstileSiteKeyDescription": "Cloudflare에서 제공하는 턴스타일 사이트 키", "verifySettings": "검증 설정" + }, + "verify-code": { + "dailyLimit": "일일 한도", + "dailyLimitDescription": "하루에 보낼 수 있는 인증 코드의 최대 수", + "expireTime": "만료 시간", + "expireTimeDescription": "인증 코드 만료 시간(분)", + "interval": "전송 간격", + "intervalDescription": "인증 코드 전송 간의 최소 간격(초)", + "minute": "분", + "saveSuccess": "저장 성공", + "second": "초", + "times": "회", + "verifyCodeSettings": "인증 코드 설정" } } diff --git a/apps/admin/locales/ko-KR/phone.json b/apps/admin/locales/ko-KR/phone.json index 3ab1408..36bf1dc 100644 --- a/apps/admin/locales/ko-KR/phone.json +++ b/apps/admin/locales/ko-KR/phone.json @@ -4,18 +4,9 @@ "enable": "활성화", "enableTip": "활성화 후, 휴대폰 등록, 로그인, 연결 및 연결 해제 기능이 활성화됩니다", "endpointLabel": "엔드포인트", - "expireTime": "만료 시간", - "expireTimeTip": "SMS 인증 코드 유효 기간 (초)", - "interval": "간격", - "intervalTip": "같은 전화번호로 SMS 인증 코드를 보내는 간격(초), 0은 제한 없음", - "limit": "일일 한도", - "limitTip": "동일한 전화번호에 대한 일일 SMS 인증 코드 전송 제한, 0은 제한 없음", "logs": "로그", "phoneNumberLabel": "전화번호", "placeholders": { - "expireTime": "만료 시간을 입력하세요. 기본값은 300입니다", - "interval": "간격 시간을 입력하세요, 기본값은 60입니다", - "limit": "일일 제한을 입력하세요, 기본값은 20입니다", "template": "귀하의 인증 코드는 {code}이며, 5분 동안 유효합니다", "templateCode": "템플릿 코드를 입력하세요" }, diff --git a/apps/admin/locales/ko-KR/user.json b/apps/admin/locales/ko-KR/user.json index 780ec0f..44adb18 100644 --- a/apps/admin/locales/ko-KR/user.json +++ b/apps/admin/locales/ko-KR/user.json @@ -39,7 +39,6 @@ "editSubscription": "구독 수정", "editUser": "사용자 편집", "email": "이메일", - "emailNotifications": "이메일 알림", "enable": "사용", "expireTime": "만료 시간", "expiredAt": "만료일", @@ -82,7 +81,6 @@ "subscriptionName": "구독 이름", "subscriptionNotifications": "구독 알림", "success": "성공", - "telegramNotifications": "텔레그램 알림", "telephone": "전화번호", "telephonePlaceholder": "전화번호 입력", "time": "시간", diff --git a/apps/admin/locales/no-NO/auth-control.json b/apps/admin/locales/no-NO/auth-control.json index abb9153..5fc72fd 100644 --- a/apps/admin/locales/no-NO/auth-control.json +++ b/apps/admin/locales/no-NO/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Turnstile hemmelig nøkkel levert av Cloudflare", "turnstileSiteKeyDescription": "Turnstile nettsted nøkkel levert av Cloudflare", "verifySettings": "Verifiseringsinnstillinger" + }, + "verify-code": { + "dailyLimit": "Dagsgrense", + "dailyLimitDescription": "Maksimalt antall bekreftelseskoder som kan sendes per dag", + "expireTime": "Utløpstid", + "expireTimeDescription": "Utløpstid for bekreftelseskode (minutter)", + "interval": "Sendingsintervall", + "intervalDescription": "Minimum intervall mellom sending av bekreftelseskoder (sekunder)", + "minute": "minutter", + "saveSuccess": "Lagring vellykket", + "second": "sekunder", + "times": "ganger", + "verifyCodeSettings": "Innstillinger for bekreftelseskode" } } diff --git a/apps/admin/locales/no-NO/phone.json b/apps/admin/locales/no-NO/phone.json index 2a83244..bcd16a8 100644 --- a/apps/admin/locales/no-NO/phone.json +++ b/apps/admin/locales/no-NO/phone.json @@ -4,18 +4,9 @@ "enable": "Aktiver", "enableTip": "Etter aktivering vil funksjonene for registrering, innlogging, binding og frakobling av mobiltelefon bli aktivert", "endpointLabel": "Endepunkt", - "expireTime": "Utløpstid", - "expireTimeTip": "Gyldighetsperiode for SMS-bekreftelseskode (sekunder)", - "interval": "Intervall", - "intervalTip": "SMS-verifiseringskode sendingsintervall for samme telefonnummer (sekunder), 0 betyr ingen begrensning", - "limit": "Daglig grense", - "limitTip": "Daglig grense for sending av SMS-verifiseringskode til samme telefonnummer, 0 betyr ingen grense", "logs": "Logger", "phoneNumberLabel": "Telefonnummer", "placeholders": { - "expireTime": "Skriv inn utløpstid, standard er 300", - "interval": "Skriv inn intervalltid, standard er 60", - "limit": "Skriv inn daglig grense, standard er 20", "template": "Din verifiseringskode er {code}, gyldig i 5 minutter", "templateCode": "Skriv inn malkode" }, diff --git a/apps/admin/locales/no-NO/user.json b/apps/admin/locales/no-NO/user.json index ce7cdec..928256e 100644 --- a/apps/admin/locales/no-NO/user.json +++ b/apps/admin/locales/no-NO/user.json @@ -39,7 +39,6 @@ "editSubscription": "Rediger abonnement", "editUser": "Rediger bruker", "email": "e-post", - "emailNotifications": "E-postvarsler", "enable": "Aktiver", "expireTime": "Utløpstid", "expiredAt": "Utløpt Dato", @@ -82,7 +81,6 @@ "subscriptionName": "Abonnementsnavn", "subscriptionNotifications": "Abonnementsvarsler", "success": "Suksess", - "telegramNotifications": "Telegramvarsler", "telephone": "Telefonnummer", "telephonePlaceholder": "Skriv inn telefonnummer", "time": "Tid", diff --git a/apps/admin/locales/pl-PL/auth-control.json b/apps/admin/locales/pl-PL/auth-control.json index b643198..6a31133 100644 --- a/apps/admin/locales/pl-PL/auth-control.json +++ b/apps/admin/locales/pl-PL/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Sekretny klucz bramki dostarczony przez Cloudflare", "turnstileSiteKeyDescription": "Klucz witryny bramki dostarczony przez Cloudflare", "verifySettings": "Ustawienia weryfikacji" + }, + "verify-code": { + "dailyLimit": "Limit dzienny", + "dailyLimitDescription": "Maksymalna liczba kodów weryfikacyjnych, które można wysłać dziennie", + "expireTime": "Czas wygaśnięcia", + "expireTimeDescription": "Czas wygaśnięcia kodu weryfikacyjnego (minuty)", + "interval": "Interwał wysyłania", + "intervalDescription": "Minimalny interwał między wysyłaniem kodów weryfikacyjnych (sekundy)", + "minute": "minuty", + "saveSuccess": "Zapisano pomyślnie", + "second": "sekundy", + "times": "razy", + "verifyCodeSettings": "Ustawienia kodu weryfikacyjnego" } } diff --git a/apps/admin/locales/pl-PL/phone.json b/apps/admin/locales/pl-PL/phone.json index d2d5217..45b0c52 100644 --- a/apps/admin/locales/pl-PL/phone.json +++ b/apps/admin/locales/pl-PL/phone.json @@ -4,18 +4,9 @@ "enable": "Włącz", "enableTip": "Po włączeniu zostaną aktywowane funkcje rejestracji, logowania, wiązania i odwiązywania telefonu komórkowego", "endpointLabel": "Punkt końcowy", - "expireTime": "Czas wygaśnięcia", - "expireTimeTip": "Okres ważności kodu weryfikacyjnego SMS (sekundy)", - "interval": "Interwał", - "intervalTip": "Interwał wysyłania kodu weryfikacyjnego SMS dla tego samego numeru telefonu (w sekundach), 0 oznacza brak ograniczeń", - "limit": "Dzienne ograniczenie", - "limitTip": "Dzienny limit wysyłania kodów weryfikacyjnych SMS dla tego samego numeru telefonu, 0 oznacza brak limitu", "logs": "Dzienniki", "phoneNumberLabel": "Numer telefonu", "placeholders": { - "expireTime": "Wprowadź czas wygaśnięcia, domyślnie 300", - "interval": "Wprowadź czas interwału, domyślnie 60", - "limit": "Wprowadź dzienny limit, domyślnie 20", "template": "Twój kod weryfikacyjny to {code}, ważny przez 5 minut", "templateCode": "Wprowadź kod szablonu" }, diff --git a/apps/admin/locales/pl-PL/user.json b/apps/admin/locales/pl-PL/user.json index 176b143..39e99e5 100644 --- a/apps/admin/locales/pl-PL/user.json +++ b/apps/admin/locales/pl-PL/user.json @@ -39,7 +39,6 @@ "editSubscription": "Edytuj subskrypcję", "editUser": "Edytuj użytkownika", "email": "e-mail", - "emailNotifications": "Powiadomienia e-mailowe", "enable": "Włącz", "expireTime": "Czas wygaśnięcia", "expiredAt": "Data wygaśnięcia", @@ -82,7 +81,6 @@ "subscriptionName": "Nazwa subskrypcji", "subscriptionNotifications": "Powiadomienia o subskrypcji", "success": "Sukces", - "telegramNotifications": "Powiadomienia Telegram", "telephone": "Numer telefonu", "telephonePlaceholder": "Wprowadź numer telefonu", "time": "Czas", diff --git a/apps/admin/locales/pt-BR/auth-control.json b/apps/admin/locales/pt-BR/auth-control.json index deea1dd..a802e23 100644 --- a/apps/admin/locales/pt-BR/auth-control.json +++ b/apps/admin/locales/pt-BR/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Chave secreta do Turnstile fornecida pela Cloudflare", "turnstileSiteKeyDescription": "Chave do site do Turnstile fornecida pela Cloudflare", "verifySettings": "Configurações de Verificação" + }, + "verify-code": { + "dailyLimit": "Limite Diário", + "dailyLimitDescription": "Número máximo de códigos de verificação que podem ser enviados por dia", + "expireTime": "Tempo de Expiração", + "expireTimeDescription": "Tempo de expiração do código de verificação (minutos)", + "interval": "Intervalo de Envio", + "intervalDescription": "Intervalo mínimo entre o envio de códigos de verificação (segundos)", + "minute": "minutos", + "saveSuccess": "Salvo com Sucesso", + "second": "segundos", + "times": "vezes", + "verifyCodeSettings": "Configurações do Código de Verificação" } } diff --git a/apps/admin/locales/pt-BR/phone.json b/apps/admin/locales/pt-BR/phone.json index 3171c4c..852a1cb 100644 --- a/apps/admin/locales/pt-BR/phone.json +++ b/apps/admin/locales/pt-BR/phone.json @@ -4,18 +4,9 @@ "enable": "Habilitar", "enableTip": "Após a ativação, as funções de registro, login, vinculação e desvinculação de telefone celular serão ativadas", "endpointLabel": "Endpoint", - "expireTime": "Tempo de Expiração", - "expireTimeTip": "Período de validade do código de verificação por SMS (segundos)", - "interval": "Intervalo", - "intervalTip": "Intervalo de envio do código de verificação por SMS para o mesmo número de telefone (segundos), 0 significa sem limite", - "limit": "Limite Diário", - "limitTip": "Limite diário de envio de código de verificação por SMS para o mesmo número de telefone, 0 significa sem limite", "logs": "Registros", "phoneNumberLabel": "Número de Telefone", "placeholders": { - "expireTime": "Insira o tempo de expiração, o padrão é 300", - "interval": "Insira o tempo de intervalo, o padrão é 60", - "limit": "Insira o limite diário, o padrão é 20", "template": "Seu código de verificação é {code}, válido por 5 minutos", "templateCode": "Insira o código do modelo" }, diff --git a/apps/admin/locales/pt-BR/user.json b/apps/admin/locales/pt-BR/user.json index 47f6502..cfdecce 100644 --- a/apps/admin/locales/pt-BR/user.json +++ b/apps/admin/locales/pt-BR/user.json @@ -39,7 +39,6 @@ "editSubscription": "Editar Assinatura", "editUser": "Editar Usuário", "email": "e-mail", - "emailNotifications": "Notificações por Email", "enable": "Habilitar", "expireTime": "Tempo de Expiração", "expiredAt": "Expirado Em", @@ -82,7 +81,6 @@ "subscriptionName": "Nome da Assinatura", "subscriptionNotifications": "Notificações de Assinatura", "success": "Sucesso", - "telegramNotifications": "Notificações do Telegram", "telephone": "Número de Telefone", "telephonePlaceholder": "Digite o número de telefone", "time": "Hora", diff --git a/apps/admin/locales/ro-RO/auth-control.json b/apps/admin/locales/ro-RO/auth-control.json index 289086f..97f5a71 100644 --- a/apps/admin/locales/ro-RO/auth-control.json +++ b/apps/admin/locales/ro-RO/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Cheia secretă a turnstilei furnizată de Cloudflare", "turnstileSiteKeyDescription": "Cheia site-ului turnstile furnizată de Cloudflare", "verifySettings": "Setări Verificare" + }, + "verify-code": { + "dailyLimit": "Limită Zilnică", + "dailyLimitDescription": "Numărul maxim de coduri de verificare care pot fi trimise pe zi", + "expireTime": "Timp de Expirare", + "expireTimeDescription": "Timpul de expirare a codului de verificare (minute)", + "interval": "Interval de Trimitere", + "intervalDescription": "Intervalul minim între trimiterea codurilor de verificare (secunde)", + "minute": "minute", + "saveSuccess": "Salvare cu Succes", + "second": "secunde", + "times": "ori", + "verifyCodeSettings": "Setări Cod de Verificare" } } diff --git a/apps/admin/locales/ro-RO/phone.json b/apps/admin/locales/ro-RO/phone.json index 7b955b1..7640147 100644 --- a/apps/admin/locales/ro-RO/phone.json +++ b/apps/admin/locales/ro-RO/phone.json @@ -4,18 +4,9 @@ "enable": "Activează", "enableTip": "După activare, funcțiile de înregistrare, autentificare, asociere și disociere a telefonului mobil vor fi activate", "endpointLabel": "Punct de acces", - "expireTime": "Timp de expirare", - "expireTimeTip": "Perioada de valabilitate a codului de verificare prin SMS (secunde)", - "interval": "Interval", - "intervalTip": "Intervalul de trimitere a codului de verificare prin SMS pentru același număr de telefon (secunde), 0 înseamnă fără limită", - "limit": "Limită zilnică", - "limitTip": "Limita zilnică de trimitere a codului de verificare prin SMS pentru același număr de telefon, 0 înseamnă fără limită", "logs": "Jurnale", "phoneNumberLabel": "Număr de telefon", "placeholders": { - "expireTime": "Introduceți timpul de expirare, implicit este 300", - "interval": "Introduceți timpul de interval, implicit este 60", - "limit": "Introduceți limita zilnică, implicit este 20", "template": "Codul dumneavoastră de verificare este {code}, valabil timp de 5 minute", "templateCode": "Introduceți codul șablonului" }, diff --git a/apps/admin/locales/ro-RO/user.json b/apps/admin/locales/ro-RO/user.json index 4a66096..df0cb75 100644 --- a/apps/admin/locales/ro-RO/user.json +++ b/apps/admin/locales/ro-RO/user.json @@ -39,7 +39,6 @@ "editSubscription": "Editează Abonamentul", "editUser": "Editare utilizator", "email": "e-mail", - "emailNotifications": "Notificări prin email", "enable": "Activare", "expireTime": "Timp de expirare", "expiredAt": "Expiră la", @@ -82,7 +81,6 @@ "subscriptionName": "Numele Abonamentului", "subscriptionNotifications": "Notificări de abonament", "success": "Succes", - "telegramNotifications": "Notificări Telegram", "telephone": "Număr de telefon", "telephonePlaceholder": "Introduceți numărul de telefon", "time": "Timp", diff --git a/apps/admin/locales/ru-RU/auth-control.json b/apps/admin/locales/ru-RU/auth-control.json index 07a3b8d..9be2d1f 100644 --- a/apps/admin/locales/ru-RU/auth-control.json +++ b/apps/admin/locales/ru-RU/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Секретный ключ Turnstile, предоставленный Cloudflare", "turnstileSiteKeyDescription": "Ключ сайта Turnstile, предоставленный Cloudflare", "verifySettings": "Настройки проверки" + }, + "verify-code": { + "dailyLimit": "Ежедневный лимит", + "dailyLimitDescription": "Максимальное количество кодов подтверждения, которые можно отправить за день", + "expireTime": "Время истечения", + "expireTimeDescription": "Время истечения кода подтверждения (минуты)", + "interval": "Интервал отправки", + "intervalDescription": "Минимальный интервал между отправкой кодов подтверждения (секунды)", + "minute": "минуты", + "saveSuccess": "Сохранение успешно", + "second": "секунды", + "times": "раз", + "verifyCodeSettings": "Настройки кода подтверждения" } } diff --git a/apps/admin/locales/ru-RU/phone.json b/apps/admin/locales/ru-RU/phone.json index 2bfd7ad..55cc084 100644 --- a/apps/admin/locales/ru-RU/phone.json +++ b/apps/admin/locales/ru-RU/phone.json @@ -4,18 +4,9 @@ "enable": "Включить", "enableTip": "После включения будут доступны функции регистрации, входа, привязки и отвязки мобильного телефона", "endpointLabel": "Конечная точка", - "expireTime": "Время истечения", - "expireTimeTip": "Срок действия кода подтверждения по SMS (в секундах)", - "interval": "Интервал", - "intervalTip": "Интервал отправки SMS-кода подтверждения для одного и того же номера телефона (в секундах), 0 означает отсутствие ограничений", - "limit": "Дневной лимит", - "limitTip": "Дневной лимит отправки SMS-кодов подтверждения на один и тот же номер телефона, 0 означает отсутствие лимита", "logs": "Журналы", "phoneNumberLabel": "Номер телефона", "placeholders": { - "expireTime": "Введите время истечения, по умолчанию 300", - "interval": "Введите интервал времени, по умолчанию 60", - "limit": "Введите дневной лимит, по умолчанию 20", "template": "Ваш проверочный код: {code}, действителен в течение 5 минут", "templateCode": "Введите код шаблона" }, diff --git a/apps/admin/locales/ru-RU/user.json b/apps/admin/locales/ru-RU/user.json index 66bb77b..8ebaac8 100644 --- a/apps/admin/locales/ru-RU/user.json +++ b/apps/admin/locales/ru-RU/user.json @@ -39,7 +39,6 @@ "editSubscription": "Редактировать подписку", "editUser": "Редактировать пользователя", "email": "Электронная почта", - "emailNotifications": "Уведомления по электронной почте", "enable": "Включить", "expireTime": "Время истечения", "expiredAt": "Срок действия истек", @@ -82,7 +81,6 @@ "subscriptionName": "Название подписки", "subscriptionNotifications": "Уведомления о подписке", "success": "Успех", - "telegramNotifications": "Уведомления Telegram", "telephone": "Номер телефона", "telephonePlaceholder": "Введите номер телефона", "time": "Время", diff --git a/apps/admin/locales/th-TH/auth-control.json b/apps/admin/locales/th-TH/auth-control.json index feb793a..859df23 100644 --- a/apps/admin/locales/th-TH/auth-control.json +++ b/apps/admin/locales/th-TH/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "รหัสลับ Turnstile ที่จัดเตรียมโดย Cloudflare", "turnstileSiteKeyDescription": "รหัสไซต์ Turnstile ที่จัดเตรียมโดย Cloudflare", "verifySettings": "การตั้งค่าการตรวจสอบ" + }, + "verify-code": { + "dailyLimit": "ขีดจำกัดรายวัน", + "dailyLimitDescription": "จำนวนสูงสุดของรหัสยืนยันที่สามารถส่งได้ต่อวัน", + "expireTime": "เวลาหมดอายุ", + "expireTimeDescription": "เวลาหมดอายุของรหัสยืนยัน (นาที)", + "interval": "ช่วงเวลาส่ง", + "intervalDescription": "ช่วงเวลาขั้นต่ำระหว่างการส่งรหัสยืนยัน (วินาที)", + "minute": "นาที", + "saveSuccess": "บันทึกสำเร็จ", + "second": "วินาที", + "times": "ครั้ง", + "verifyCodeSettings": "การตั้งค่ารหัสยืนยัน" } } diff --git a/apps/admin/locales/th-TH/phone.json b/apps/admin/locales/th-TH/phone.json index 468a3d5..1ad0143 100644 --- a/apps/admin/locales/th-TH/phone.json +++ b/apps/admin/locales/th-TH/phone.json @@ -4,18 +4,9 @@ "enable": "เปิดใช้งาน", "enableTip": "หลังจากเปิดใช้งานแล้ว ฟังก์ชันการลงทะเบียน การเข้าสู่ระบบ การผูก และการยกเลิกการผูกโทรศัพท์มือถือจะถูกเปิดใช้งาน", "endpointLabel": "จุดสิ้นสุด", - "expireTime": "เวลาหมดอายุ", - "expireTimeTip": "ระยะเวลาหมดอายุของรหัสยืนยันทาง SMS (วินาที)", - "interval": "ช่วงเวลา", - "intervalTip": "ช่วงเวลาการส่งรหัสยืนยันทาง SMS สำหรับหมายเลขโทรศัพท์เดียวกัน (วินาที), 0 หมายถึงไม่มีข้อจำกัด", - "limit": "ขีดจำกัดรายวัน", - "limitTip": "จำกัดการส่งรหัสยืนยันทาง SMS รายวันสำหรับหมายเลขโทรศัพท์เดียวกัน, 0 หมายถึงไม่จำกัด", "logs": "บันทึก", "phoneNumberLabel": "หมายเลขโทรศัพท์", "placeholders": { - "expireTime": "กรอกเวลาหมดอายุ ค่าเริ่มต้นคือ 300", - "interval": "กรอกช่วงเวลา ค่าเริ่มต้นคือ 60", - "limit": "กรอกขีดจำกัดรายวัน ค่าเริ่มต้นคือ 20", "template": "รหัสยืนยันของคุณคือ {code} ใช้ได้ภายใน 5 นาที", "templateCode": "กรอกรหัสเทมเพลต" }, diff --git a/apps/admin/locales/th-TH/user.json b/apps/admin/locales/th-TH/user.json index fe1546f..43384f6 100644 --- a/apps/admin/locales/th-TH/user.json +++ b/apps/admin/locales/th-TH/user.json @@ -39,7 +39,6 @@ "editSubscription": "แก้ไขการสมัครสมาชิก", "editUser": "แก้ไขผู้ใช้", "email": "อีเมล", - "emailNotifications": "การแจ้งเตือนทางอีเมล", "enable": "เปิดใช้งาน", "expireTime": "เวลาหมดอายุ", "expiredAt": "วันหมดอายุ", @@ -82,7 +81,6 @@ "subscriptionName": "ชื่อการสมัครสมาชิก", "subscriptionNotifications": "การแจ้งเตือนการสมัครสมาชิก", "success": "สำเร็จ", - "telegramNotifications": "การแจ้งเตือนทาง Telegram", "telephone": "หมายเลขโทรศัพท์", "telephonePlaceholder": "กรอกหมายเลขโทรศัพท์", "time": "เวลา", diff --git a/apps/admin/locales/tr-TR/auth-control.json b/apps/admin/locales/tr-TR/auth-control.json index 28b735e..0d94eab 100644 --- a/apps/admin/locales/tr-TR/auth-control.json +++ b/apps/admin/locales/tr-TR/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Cloudflare tarafından sağlanan turnstile gizli anahtarı.", "turnstileSiteKeyDescription": "Cloudflare tarafından sağlanan turnstile site anahtarı.", "verifySettings": "Doğrulama Ayarları" + }, + "verify-code": { + "dailyLimit": "Günlük Limit", + "dailyLimitDescription": "Günde gönderilebilecek maksimum doğrulama kodu sayısı", + "expireTime": "Son Kullanma Süresi", + "expireTimeDescription": "Doğrulama kodunun son kullanma süresi (dakika)", + "interval": "Gönderim Aralığı", + "intervalDescription": "Doğrulama kodlarının gönderimi arasındaki minimum aralık (saniye)", + "minute": "dakika", + "saveSuccess": "Başarıyla Kaydedildi", + "second": "saniye", + "times": "kez", + "verifyCodeSettings": "Doğrulama Kodu Ayarları" } } diff --git a/apps/admin/locales/tr-TR/phone.json b/apps/admin/locales/tr-TR/phone.json index ca80ee3..ccbcc75 100644 --- a/apps/admin/locales/tr-TR/phone.json +++ b/apps/admin/locales/tr-TR/phone.json @@ -4,18 +4,9 @@ "enable": "Etkinleştir", "enableTip": "Etkinleştirildikten sonra, cep telefonu kaydı, giriş, bağlama ve bağlantı kesme işlevleri etkinleştirilecektir", "endpointLabel": "Uç Nokta", - "expireTime": "Sona Erme Süresi", - "expireTimeTip": "SMS doğrulama kodu geçerlilik süresi (saniye)", - "interval": "Aralık", - "intervalTip": "Aynı telefon numarası için SMS doğrulama kodu gönderme aralığı (saniye), 0 sınırsız demektir", - "limit": "Günlük Limit", - "limitTip": "Aynı telefon numarası için günlük SMS doğrulama kodu gönderim limiti, 0 sınırsız demektir", "logs": "Günlükler", "phoneNumberLabel": "Telefon Numarası", "placeholders": { - "expireTime": "Sona erme süresini girin, varsayılan 300", - "interval": "Aralık süresini girin, varsayılan 60'tır", - "limit": "Günlük limiti girin, varsayılan 20'dir", "template": "Doğrulama kodunuz {code}, 5 dakika geçerlidir", "templateCode": "Şablon kodunu girin" }, diff --git a/apps/admin/locales/tr-TR/user.json b/apps/admin/locales/tr-TR/user.json index 06a2c48..5c05c7e 100644 --- a/apps/admin/locales/tr-TR/user.json +++ b/apps/admin/locales/tr-TR/user.json @@ -39,7 +39,6 @@ "editSubscription": "Aboneliği Düzenle", "editUser": "Kullanıcıyı Düzenle", "email": "e-posta", - "emailNotifications": "E-posta Bildirimleri", "enable": "etkinleştir", "expireTime": "Sona Erme Zamanı", "expiredAt": "Son Kullanma Tarihi", @@ -82,7 +81,6 @@ "subscriptionName": "Abonelik Adı", "subscriptionNotifications": "Abonelik Bildirimleri", "success": "Başarı", - "telegramNotifications": "Telegram Bildirimleri", "telephone": "Telefon Numarası", "telephonePlaceholder": "Telefon numarasını girin", "time": "Zaman", diff --git a/apps/admin/locales/uk-UA/auth-control.json b/apps/admin/locales/uk-UA/auth-control.json index 667183b..ba86b8f 100644 --- a/apps/admin/locales/uk-UA/auth-control.json +++ b/apps/admin/locales/uk-UA/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Секретний ключ Turnstile, наданий Cloudflare", "turnstileSiteKeyDescription": "Ключ сайту Turnstile, наданий Cloudflare", "verifySettings": "Налаштування перевірки" + }, + "verify-code": { + "dailyLimit": "Щоденний ліміт", + "dailyLimitDescription": "Максимальна кількість кодів підтвердження, які можуть бути надіслані за день", + "expireTime": "Час закінчення", + "expireTimeDescription": "Час закінчення коду підтвердження (хвилини)", + "interval": "Інтервал надсилання", + "intervalDescription": "Мінімальний інтервал між надсиланням кодів підтвердження (секунди)", + "minute": "хвилин", + "saveSuccess": "Успішно збережено", + "second": "секунд", + "times": "разів", + "verifyCodeSettings": "Налаштування коду підтвердження" } } diff --git a/apps/admin/locales/uk-UA/phone.json b/apps/admin/locales/uk-UA/phone.json index fcce5d6..16e19a0 100644 --- a/apps/admin/locales/uk-UA/phone.json +++ b/apps/admin/locales/uk-UA/phone.json @@ -4,18 +4,9 @@ "enable": "Увімкнути", "enableTip": "Після увімкнення будуть доступні функції реєстрації, входу, прив'язки та відв'язки мобільного телефону", "endpointLabel": "Кінцева точка", - "expireTime": "Час закінчення", - "expireTimeTip": "Термін дії коду перевірки SMS (секунди)", - "interval": "Інтервал", - "intervalTip": "Інтервал відправки SMS-коду підтвердження для одного і того ж номера телефону (в секундах), 0 означає без обмежень", - "limit": "Денний ліміт", - "limitTip": "Добова межа відправлення SMS-кодів перевірки для одного і того ж номера телефону, 0 означає відсутність обмежень", "logs": "Журнали", "phoneNumberLabel": "Номер телефону", "placeholders": { - "expireTime": "Введіть час закінчення, за замовчуванням 300", - "interval": "Введіть інтервал часу, за замовчуванням 60", - "limit": "Введіть денний ліміт, за замовчуванням 20", "template": "Ваш код підтвердження {code}, дійсний протягом 5 хвилин", "templateCode": "Введіть код шаблону" }, diff --git a/apps/admin/locales/uk-UA/user.json b/apps/admin/locales/uk-UA/user.json index cc64b91..a5db2e3 100644 --- a/apps/admin/locales/uk-UA/user.json +++ b/apps/admin/locales/uk-UA/user.json @@ -39,7 +39,6 @@ "editSubscription": "Редагувати підписку", "editUser": "Редагувати користувача", "email": "електронна пошта", - "emailNotifications": "Сповіщення електронною поштою", "enable": "Увімкнути", "expireTime": "Час закінчення", "expiredAt": "Термін дії закінчився", @@ -82,7 +81,6 @@ "subscriptionName": "Назва підписки", "subscriptionNotifications": "Сповіщення про підписку", "success": "Успіх", - "telegramNotifications": "Сповіщення Telegram", "telephone": "Номер телефону", "telephonePlaceholder": "Введіть номер телефону", "time": "Час", diff --git a/apps/admin/locales/vi-VN/auth-control.json b/apps/admin/locales/vi-VN/auth-control.json index fa0d78b..b963957 100644 --- a/apps/admin/locales/vi-VN/auth-control.json +++ b/apps/admin/locales/vi-VN/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Khóa bí mật Turnstile được cung cấp bởi Cloudflare", "turnstileSiteKeyDescription": "Khóa trang Turnstile được cung cấp bởi Cloudflare", "verifySettings": "Cài đặt Xác minh" + }, + "verify-code": { + "dailyLimit": "Giới hạn hàng ngày", + "dailyLimitDescription": "Số lượng mã xác minh tối đa có thể gửi trong một ngày", + "expireTime": "Thời gian hết hạn", + "expireTimeDescription": "Thời gian hết hạn của mã xác minh (phút)", + "interval": "Khoảng thời gian gửi", + "intervalDescription": "Khoảng thời gian tối thiểu giữa các lần gửi mã xác minh (giây)", + "minute": "phút", + "saveSuccess": "Lưu thành công", + "second": "giây", + "times": "lần", + "verifyCodeSettings": "Cài đặt mã xác minh" } } diff --git a/apps/admin/locales/vi-VN/phone.json b/apps/admin/locales/vi-VN/phone.json index bb90df5..6d5c84d 100644 --- a/apps/admin/locales/vi-VN/phone.json +++ b/apps/admin/locales/vi-VN/phone.json @@ -4,18 +4,9 @@ "enable": "Kích hoạt", "enableTip": "Sau khi kích hoạt, các chức năng đăng ký, đăng nhập, liên kết và hủy liên kết điện thoại di động sẽ được kích hoạt", "endpointLabel": "Điểm cuối", - "expireTime": "Thời Gian Hết Hạn", - "expireTimeTip": "Thời gian hiệu lực của mã xác minh SMS (giây)", - "interval": "Khoảng thời gian", - "intervalTip": "Khoảng thời gian gửi mã xác minh SMS cho cùng một số điện thoại (giây), 0 có nghĩa là không giới hạn", - "limit": "Giới hạn hàng ngày", - "limitTip": "Giới hạn gửi mã xác minh SMS hàng ngày cho cùng một số điện thoại, 0 có nghĩa là không giới hạn", "logs": "Nhật ký", "phoneNumberLabel": "Số Điện Thoại", "placeholders": { - "expireTime": "Nhập thời gian hết hạn, mặc định là 300", - "interval": "Nhập thời gian khoảng cách, mặc định là 60", - "limit": "Nhập giới hạn hàng ngày, mặc định là 20", "template": "Mã xác minh của bạn là {code}, có hiệu lực trong 5 phút", "templateCode": "Nhập mã mẫu" }, diff --git a/apps/admin/locales/vi-VN/user.json b/apps/admin/locales/vi-VN/user.json index ec3852a..86e1188 100644 --- a/apps/admin/locales/vi-VN/user.json +++ b/apps/admin/locales/vi-VN/user.json @@ -39,7 +39,6 @@ "editSubscription": "Chỉnh sửa Đăng ký", "editUser": "Chỉnh sửa người dùng", "email": "Email", - "emailNotifications": "Thông báo qua Email", "enable": "Kích hoạt", "expireTime": "Thời gian hết hạn", "expiredAt": "Ngày hết hạn", @@ -82,7 +81,6 @@ "subscriptionName": "Tên Đăng Ký", "subscriptionNotifications": "Thông báo Đăng ký", "success": "Thành công", - "telegramNotifications": "Thông báo Telegram", "telephone": "Số điện thoại", "telephonePlaceholder": "Nhập số điện thoại", "time": "Thời Gian", diff --git a/apps/admin/locales/zh-CN/auth-control.json b/apps/admin/locales/zh-CN/auth-control.json index fb6a4f4..280a960 100644 --- a/apps/admin/locales/zh-CN/auth-control.json +++ b/apps/admin/locales/zh-CN/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "由 Cloudflare 提供的闸机密钥", "turnstileSiteKeyDescription": "由 Cloudflare 提供的闸机站点密钥", "verifySettings": "验证设置" + }, + "verify-code": { + "dailyLimit": "每日限制", + "dailyLimitDescription": "每天最多可发送的验证码数量", + "expireTime": "过期时间", + "expireTimeDescription": "验证码的有效期(分钟)", + "interval": "发送间隔", + "intervalDescription": "两次发送验证码的最小间隔时间(秒)", + "minute": "分钟", + "saveSuccess": "保存成功", + "second": "秒", + "times": "次", + "verifyCodeSettings": "验证码设置" } } diff --git a/apps/admin/locales/zh-CN/phone.json b/apps/admin/locales/zh-CN/phone.json index f4f2a7a..ec5070f 100644 --- a/apps/admin/locales/zh-CN/phone.json +++ b/apps/admin/locales/zh-CN/phone.json @@ -4,18 +4,9 @@ "enable": "启用", "enableTip": "启用后,将启用手机注册、登录、绑定和解绑功能", "endpointLabel": "端点", - "expireTime": "过期时间", - "expireTimeTip": "短信验证码有效期(秒)", - "interval": "间隔", - "intervalTip": "同一手机号发送短信验证码的间隔时间(秒),0表示无限制", - "limit": "每日限额", - "limitTip": "同一手机号每日短信验证码发送限制,0表示无限制", "logs": "日志", "phoneNumberLabel": "电话号码", "placeholders": { - "expireTime": "输入过期时间,默认为300", - "interval": "输入间隔时间,默认为60", - "limit": "输入每日限制,默认为20", "template": "您的验证码是{code},有效期为5分钟", "templateCode": "输入模板代码" }, diff --git a/apps/admin/locales/zh-CN/user.json b/apps/admin/locales/zh-CN/user.json index 1947935..873c45f 100644 --- a/apps/admin/locales/zh-CN/user.json +++ b/apps/admin/locales/zh-CN/user.json @@ -39,7 +39,6 @@ "editSubscription": "编辑订阅", "editUser": "编辑用户", "email": "邮箱", - "emailNotifications": "邮件通知", "enable": "启用", "expireTime": "到期时间", "expiredAt": "过期时间", @@ -82,7 +81,6 @@ "subscriptionName": "订阅名称", "subscriptionNotifications": "订阅通知", "success": "成功", - "telegramNotifications": "Telegram通知", "telephone": "手机号", "telephonePlaceholder": "输入手机号", "time": "时间", diff --git a/apps/admin/locales/zh-HK/auth-control.json b/apps/admin/locales/zh-HK/auth-control.json index b8d6e72..677e449 100644 --- a/apps/admin/locales/zh-HK/auth-control.json +++ b/apps/admin/locales/zh-HK/auth-control.json @@ -58,5 +58,18 @@ "turnstileSecretDescription": "Cloudflare 提供的轉閘密鑰", "turnstileSiteKeyDescription": "Cloudflare 提供的轉閘網站密鑰", "verifySettings": "驗證設置" + }, + "verify-code": { + "dailyLimit": "每日限制", + "dailyLimitDescription": "每天可以發送的最大驗證碼數量", + "expireTime": "過期時間", + "expireTimeDescription": "驗證碼過期時間(分鐘)", + "interval": "發送間隔", + "intervalDescription": "發送驗證碼的最小間隔(秒)", + "minute": "分鐘", + "saveSuccess": "保存成功", + "second": "秒", + "times": "次", + "verifyCodeSettings": "驗證碼設置" } } diff --git a/apps/admin/locales/zh-HK/phone.json b/apps/admin/locales/zh-HK/phone.json index 6ee6acf..ea84cd8 100644 --- a/apps/admin/locales/zh-HK/phone.json +++ b/apps/admin/locales/zh-HK/phone.json @@ -4,18 +4,9 @@ "enable": "啟用", "enableTip": "啟用後,將啟用手機註冊、登入、綁定和解綁功能", "endpointLabel": "端點", - "expireTime": "到期時間", - "expireTimeTip": "SMS 驗證碼有效期(秒)", - "interval": "間隔", - "intervalTip": "相同電話號碼的短信驗證碼發送間隔(秒),0 表示無限制", - "limit": "每日限額", - "limitTip": "同一電話號碼每日發送SMS驗證碼的限制,0表示無限制", "logs": "日誌", "phoneNumberLabel": "電話號碼", "placeholders": { - "expireTime": "輸入過期時間,預設為300", - "interval": "輸入間隔時間,默認為60", - "limit": "輸入每日限制,默認為20", "template": "您的驗證碼是{code},有效期為5分鐘", "templateCode": "輸入模板代碼" }, diff --git a/apps/admin/locales/zh-HK/user.json b/apps/admin/locales/zh-HK/user.json index 522f485..a411660 100644 --- a/apps/admin/locales/zh-HK/user.json +++ b/apps/admin/locales/zh-HK/user.json @@ -39,7 +39,6 @@ "editSubscription": "編輯訂閱", "editUser": "編輯使用者", "email": "電子郵件", - "emailNotifications": "電郵通知", "enable": "啟用", "expireTime": "到期時間", "expiredAt": "到期時間", @@ -82,7 +81,6 @@ "subscriptionName": "訂閱名稱", "subscriptionNotifications": "訂閱通知", "success": "成功", - "telegramNotifications": "Telegram 通知", "telephone": "電話號碼", "telephonePlaceholder": "輸入電話號碼", "time": "時間", diff --git a/apps/admin/services/admin/index.ts b/apps/admin/services/admin/index.ts index 1ca3f9e..5cf2608 100644 --- a/apps/admin/services/admin/index.ts +++ b/apps/admin/services/admin/index.ts @@ -1,5 +1,5 @@ // @ts-ignore - + // API 更新时间: // API 唯一标识: import * as announcement from './announcement'; diff --git a/apps/admin/services/admin/system.ts b/apps/admin/services/admin/system.ts index c55f64b..4e52bc1 100644 --- a/apps/admin/services/admin/system.ts +++ b/apps/admin/services/admin/system.ts @@ -323,6 +323,32 @@ export async function updateTosConfig(body: API.TosConfig, options?: { [key: str }); } +/** Get Verify Code Config GET /v1/admin/system/verify_code_config */ +export async function getVerifyCodeConfig(options?: { [key: string]: any }) { + return request( + '/v1/admin/system/verify_code_config', + { + method: 'GET', + ...(options || {}), + }, + ); +} + +/** Update Verify Code Config PUT /v1/admin/system/verify_code_config */ +export async function updateVerifyCodeConfig( + body: API.VerifyCodeConfig, + options?: { [key: string]: any }, +) { + return request('/v1/admin/system/verify_code_config', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + /** Get verify config GET /v1/admin/system/verify_config */ export async function getVerifyConfig(options?: { [key: string]: any }) { return request('/v1/admin/system/verify_config', { diff --git a/apps/admin/services/admin/typings.d.ts b/apps/admin/services/admin/typings.d.ts index 1aca697..bcdbcc0 100644 --- a/apps/admin/services/admin/typings.d.ts +++ b/apps/admin/services/admin/typings.d.ts @@ -1362,8 +1362,6 @@ declare namespace API { type UpdateUserNotifySettingRequest = { user_id: number; - enable_email_notify: boolean; - enable_telegram_notify: boolean; enable_balance_notify: boolean; enable_login_notify: boolean; enable_subscribe_notify: boolean; @@ -1390,9 +1388,6 @@ declare namespace API { referer_id: number; enable: boolean; is_admin?: boolean; - valid_email: boolean; - enable_email_notify: boolean; - enable_telegram_notify: boolean; enable_balance_notify: boolean; enable_login_notify: boolean; enable_subscribe_notify: boolean; @@ -1497,6 +1492,12 @@ declare namespace API { download: number; }; + type VerifyCodeConfig = { + verify_code_expire_time: number; + verify_code_limit: number; + verify_code_interval: number; + }; + type VerifyConfig = { turnstile_site_key: string; turnstile_secret: string; diff --git a/apps/admin/services/common/index.ts b/apps/admin/services/common/index.ts index 73b3bda..61ba129 100644 --- a/apps/admin/services/common/index.ts +++ b/apps/admin/services/common/index.ts @@ -1,5 +1,5 @@ // @ts-ignore - + // API 更新时间: // API 唯一标识: import * as auth from './auth'; diff --git a/apps/admin/services/common/typings.d.ts b/apps/admin/services/common/typings.d.ts index db26303..4318a44 100644 --- a/apps/admin/services/common/typings.d.ts +++ b/apps/admin/services/common/typings.d.ts @@ -152,6 +152,7 @@ declare namespace API { invite: InviteConfig; currency: CurrencyConfig; subscribe: SubscribeConfig; + verify_code: VerifyCodeConfig; oauth_methods: string[]; }; @@ -579,9 +580,6 @@ declare namespace API { referer_id: number; enable: boolean; is_admin?: boolean; - valid_email: boolean; - enable_email_notify: boolean; - enable_telegram_notify: boolean; enable_balance_notify: boolean; enable_login_notify: boolean; enable_subscribe_notify: boolean; @@ -686,6 +684,12 @@ declare namespace API { enable_reset_password_verify: boolean; }; + type VerifyCodeConfig = { + verify_code_expire_time: number; + verify_code_limit: number; + verify_code_interval: number; + }; + type VerifyConfig = { turnstile_site_key: string; turnstile_secret: string; diff --git a/apps/user/app/(main)/(user)/profile/notify-settings.tsx b/apps/user/app/(main)/(user)/profile/notify-settings.tsx index 5911677..8343e0a 100644 --- a/apps/user/app/(main)/(user)/profile/notify-settings.tsx +++ b/apps/user/app/(main)/(user)/profile/notify-settings.tsx @@ -13,9 +13,6 @@ import { toast } from 'sonner'; import { z } from 'zod'; const FormSchema = z.object({ - telegram: z.number().nullish(), - enable_email_notify: z.boolean(), - enable_telegram_notify: z.boolean(), enable_balance_notify: z.boolean(), enable_login_notify: z.boolean(), enable_subscribe_notify: z.boolean(), @@ -28,9 +25,6 @@ export default function NotifySettings() { const form = useForm>({ resolver: zodResolver(FormSchema), defaultValues: { - telegram: user?.telegram, - enable_email_notify: user?.enable_email_notify, - enable_telegram_notify: user?.enable_telegram_notify, enable_balance_notify: user?.enable_balance_notify, enable_login_notify: user?.enable_login_notify, enable_subscribe_notify: user?.enable_subscribe_notify, @@ -59,8 +53,6 @@ export default function NotifySettings() {
{[ - { name: 'enable_email_notify', label: 'emailNotification' }, - { name: 'enable_telegram_notify', label: 'telegramNotification' }, { name: 'enable_balance_notify', label: 'balanceChange' }, { name: 'enable_login_notify', label: 'login' }, { name: 'enable_subscribe_notify', label: 'subscribe' }, diff --git a/apps/user/app/auth/send-code.tsx b/apps/user/app/auth/send-code.tsx index 40c1598..a9e426d 100644 --- a/apps/user/app/auth/send-code.tsx +++ b/apps/user/app/auth/send-code.tsx @@ -1,10 +1,11 @@ 'use client'; +import useGlobalStore from '@/config/use-global'; import { sendEmailCode, sendSmsCode } from '@/services/common/common'; import { Button } from '@workspace/ui/components/button'; import { useCountDown } from 'ahooks'; import { useTranslations } from 'next-intl'; -import { useState } from 'react'; +import { useEffect, useState } from 'react'; interface SendCodeProps { type: 'email' | 'phone'; @@ -17,22 +18,43 @@ interface SendCodeProps { } export default function SendCode({ type, params }: SendCodeProps) { const t = useTranslations('auth'); + const { common } = useGlobalStore(); + const { verify_code_interval } = common.verify_code; const [targetDate, setTargetDate] = useState(); + useEffect(() => { + const storedEndTime = localStorage.getItem(`verify_code_${type}`); + if (storedEndTime) { + const endTime = parseInt(storedEndTime); + if (endTime > Date.now()) { + setTargetDate(endTime); + } else { + localStorage.removeItem(`verify_code_${type}`); + } + } + }, [type]); + const [, { seconds }] = useCountDown({ targetDate, onEnd: () => { setTargetDate(undefined); + localStorage.removeItem(`verify_code_${type}`); }, }); + const setCodeTimer = () => { + const endTime = Date.now() + verify_code_interval * 1000; + setTargetDate(endTime); + localStorage.setItem(`verify_code_${type}`, endTime.toString()); + }; + const getEmailCode = async () => { if (params.email && params.type) { await sendEmailCode({ email: params.email, type: params.type, }); - setTargetDate(Date.now() + 60000); + setCodeTimer(); } }; @@ -43,7 +65,7 @@ export default function SendCode({ type, params }: SendCodeProps) { telephone_area_code: params.telephone_area_code, type: params.type, }); - setTargetDate(Date.now() + 60000); + setCodeTimer(); } }; diff --git a/apps/user/components/subscribe/purchase.tsx b/apps/user/components/subscribe/purchase.tsx index 535bf6e..06286e3 100644 --- a/apps/user/components/subscribe/purchase.tsx +++ b/apps/user/components/subscribe/purchase.tsx @@ -84,7 +84,7 @@ export default function Purchase({ subscribe, setSubscribe }: Readonly) { console.log(error); } }); - }, [params, router]); + }, [params, router, getUserInfo]); return ( diff --git a/apps/user/config/use-global.tsx b/apps/user/config/use-global.tsx index 1728e29..4eece58 100644 --- a/apps/user/config/use-global.tsx +++ b/apps/user/config/use-global.tsx @@ -43,6 +43,9 @@ export const useGlobalStore = create((set, get) => ({ register: { stop_register: false, enable_trial: false, + trial_subscribe: 0, + trial_time: 0, + trial_time_unit: '', enable_ip_register_limit: false, ip_register_limit: 0, ip_register_limit_duration: 0, @@ -63,6 +66,11 @@ export const useGlobalStore = create((set, get) => ({ subscribe_domain: '', pan_domain: false, }, + verify_code: { + verify_code_expire_time: 5, + verify_code_limit: 15, + verify_code_interval: 60, + }, oauth_methods: [], }, user: undefined, diff --git a/apps/user/locales/cs-CZ/profile.json b/apps/user/locales/cs-CZ/profile.json index 98fd83f..c9bc2a5 100644 --- a/apps/user/locales/cs-CZ/profile.json +++ b/apps/user/locales/cs-CZ/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Změna zůstatku", - "bind": "Přejít na vazbu", "channels": "Notifikační kanály", - "emailNotification": "E-mailové oznámení", "finance": "Finance", "login": "Přihlášení", "notificationSettings": "Nastavení oznámení", "notificationTypes": "Typy notifikací", "save": "Uložit změny", "subscribe": "Přihlásit se", - "telegramIdPlaceholder": "Zadejte Telegram ID", - "telegramNotification": "Telegram oznámení", - "unbind": "Zrušit vazbu", "updateSuccess": "Aktualizace byla úspěšná" }, "thirdParty": { diff --git a/apps/user/locales/de-DE/profile.json b/apps/user/locales/de-DE/profile.json index a60ae57..1c35c11 100644 --- a/apps/user/locales/de-DE/profile.json +++ b/apps/user/locales/de-DE/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Kontostandsänderung", - "bind": "Zur Bindung gehen", "channels": "Benachrichtigungskanäle", - "emailNotification": "E-Mail-Benachrichtigung", "finance": "Finanzen", "login": "Anmelden", "notificationSettings": "Benachrichtigungseinstellungen", "notificationTypes": "Benachrichtigungstypen", "save": "Änderungen speichern", "subscribe": "Abonnieren", - "telegramIdPlaceholder": "Telegram-ID eingeben", - "telegramNotification": "Telegram-Benachrichtigung", - "unbind": "Lösen", "updateSuccess": "Erfolgreich aktualisiert" }, "thirdParty": { diff --git a/apps/user/locales/en-US/profile.json b/apps/user/locales/en-US/profile.json index 8179568..67a4f13 100644 --- a/apps/user/locales/en-US/profile.json +++ b/apps/user/locales/en-US/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Balance Change", - "bind": "Go to Binding", "channels": "Notification Channels", - "emailNotification": "Email Notification", "finance": "Finance", "login": "Login", "notificationSettings": "Notification Settings", "notificationTypes": "Notification Types", "save": "Save Changes", "subscribe": "Subscribe", - "telegramIdPlaceholder": "Enter Telegram ID", - "telegramNotification": "Telegram Notification", - "unbind": "Unbind", "updateSuccess": "Update Successful" }, "thirdParty": { diff --git a/apps/user/locales/es-ES/profile.json b/apps/user/locales/es-ES/profile.json index 96ef120..7507c58 100644 --- a/apps/user/locales/es-ES/profile.json +++ b/apps/user/locales/es-ES/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Cambio de Saldo", - "bind": "Ir a Vinculación", "channels": "Canales de Notificación", - "emailNotification": "Notificación por correo electrónico", "finance": "Finanzas", "login": "Iniciar Sesión", "notificationSettings": "Configuración de notificaciones", "notificationTypes": "Tipos de Notificación", "save": "Guardar Cambios", "subscribe": "Suscribirse", - "telegramIdPlaceholder": "Ingrese ID de Telegram", - "telegramNotification": "Notificación de Telegram", - "unbind": "Desvincular", "updateSuccess": "Actualización exitosa" }, "thirdParty": { diff --git a/apps/user/locales/es-MX/profile.json b/apps/user/locales/es-MX/profile.json index df37065..10f4439 100644 --- a/apps/user/locales/es-MX/profile.json +++ b/apps/user/locales/es-MX/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Cambio de Saldo", - "bind": "Ir a Vinculación", "channels": "Canales de Notificación", - "emailNotification": "Notificación por correo electrónico", "finance": "Finanzas", "login": "Iniciar Sesión", "notificationSettings": "Configuración de notificaciones", "notificationTypes": "Tipos de Notificación", "save": "Guardar Cambios", "subscribe": "Suscribirse", - "telegramIdPlaceholder": "Ingrese ID de Telegram", - "telegramNotification": "Notificación de Telegram", - "unbind": "Desvincular", "updateSuccess": "Actualización exitosa" }, "thirdParty": { diff --git a/apps/user/locales/fa-IR/profile.json b/apps/user/locales/fa-IR/profile.json index d2e8e63..8585570 100644 --- a/apps/user/locales/fa-IR/profile.json +++ b/apps/user/locales/fa-IR/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "تغییر موجودی", - "bind": "رفتن به اتصال", "channels": "کانال‌های اعلان", - "emailNotification": "اعلان ایمیل", "finance": "مالی", "login": "ورود", "notificationSettings": "تنظیمات اعلان", "notificationTypes": "نوع‌های اعلان", "save": "ذخیره تغییرات", "subscribe": "اشتراک‌گذاری", - "telegramIdPlaceholder": "شناسه تلگرام را وارد کنید", - "telegramNotification": "اعلان تلگرام", - "unbind": "لغو اتصال", "updateSuccess": "به‌روزرسانی موفقیت‌آمیز" }, "thirdParty": { diff --git a/apps/user/locales/fi-FI/profile.json b/apps/user/locales/fi-FI/profile.json index fc9b6e2..5cc08f6 100644 --- a/apps/user/locales/fi-FI/profile.json +++ b/apps/user/locales/fi-FI/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Saldo Muutos", - "bind": "Siirry sitomiseen", "channels": "Ilmoituskanavat", - "emailNotification": "Sähköposti-ilmoitus", "finance": "Rahoitus", "login": "Kirjaudu", "notificationSettings": "Ilmoitusasetukset", "notificationTypes": "Ilmoitustyypit", "save": "Tallenna muutokset", "subscribe": "Tilaa", - "telegramIdPlaceholder": "Syötä Telegram ID", - "telegramNotification": "Telegram-ilmoitus", - "unbind": "Poista sitominen", "updateSuccess": "Päivitys onnistui" }, "thirdParty": { diff --git a/apps/user/locales/fr-FR/profile.json b/apps/user/locales/fr-FR/profile.json index 2aa769b..db99af5 100644 --- a/apps/user/locales/fr-FR/profile.json +++ b/apps/user/locales/fr-FR/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Changement de Solde", - "bind": "Aller à la liaison", "channels": "Canaux de Notification", - "emailNotification": "Notification par e-mail", "finance": "Finance", "login": "Connexion", "notificationSettings": "Paramètres de notification", "notificationTypes": "Types de Notification", "save": "Enregistrer les Modifications", "subscribe": "S'abonner", - "telegramIdPlaceholder": "Entrez l'ID Telegram", - "telegramNotification": "Notification Telegram", - "unbind": "Délier", "updateSuccess": "Mise à jour réussie" }, "thirdParty": { diff --git a/apps/user/locales/hi-IN/profile.json b/apps/user/locales/hi-IN/profile.json index 14a97e8..b963bff 100644 --- a/apps/user/locales/hi-IN/profile.json +++ b/apps/user/locales/hi-IN/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "बैलेंस परिवर्तन", - "bind": "बाइंडिंग पर जाएं", "channels": "सूचना चैनल", - "emailNotification": "ईमेल सूचना", "finance": "वित्त", "login": "लॉगिन", "notificationSettings": "सूचना सेटिंग्स", "notificationTypes": "सूचना प्रकार", "save": "परिवर्तन सहेजें", "subscribe": "सदस्यता लें", - "telegramIdPlaceholder": "टेलीग्राम आईडी दर्ज करें", - "telegramNotification": "टेलीग्राम सूचना", - "unbind": "अनबाइंड करें", "updateSuccess": "सफलतापूर्वक अपडेट किया गया" }, "thirdParty": { diff --git a/apps/user/locales/hu-HU/profile.json b/apps/user/locales/hu-HU/profile.json index 0679cf1..a912cca 100644 --- a/apps/user/locales/hu-HU/profile.json +++ b/apps/user/locales/hu-HU/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Egyenleg Változás", - "bind": "Menj a kötéshez", "channels": "Értesítési Csatornák", - "emailNotification": "E-mail értesítés", "finance": "Pénzügy", "login": "Bejelentkezés", "notificationSettings": "Értesítési beállítások", "notificationTypes": "Értesítési Típusok", "save": "Változtatások Mentése", "subscribe": "Feliratkozás", - "telegramIdPlaceholder": "Adja meg a Telegram azonosítót", - "telegramNotification": "Telegram értesítés", - "unbind": "Kötés feloldása", "updateSuccess": "Sikeres frissítés" }, "thirdParty": { diff --git a/apps/user/locales/ja-JP/profile.json b/apps/user/locales/ja-JP/profile.json index fb1f7f3..63e8173 100644 --- a/apps/user/locales/ja-JP/profile.json +++ b/apps/user/locales/ja-JP/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "残高の変更", - "bind": "バインディングに移動", "channels": "通知チャネル", - "emailNotification": "メール通知", "finance": "ファイナンス", "login": "ログイン", "notificationSettings": "通知設定", "notificationTypes": "通知タイプ", "save": "変更を保存", "subscribe": "購読する", - "telegramIdPlaceholder": "Telegram IDを入力", - "telegramNotification": "Telegram通知", - "unbind": "バインド解除", "updateSuccess": "更新成功" }, "thirdParty": { diff --git a/apps/user/locales/ko-KR/profile.json b/apps/user/locales/ko-KR/profile.json index 73e5229..725273a 100644 --- a/apps/user/locales/ko-KR/profile.json +++ b/apps/user/locales/ko-KR/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "잔액 변경", - "bind": "바인딩으로 이동", "channels": "알림 채널", - "emailNotification": "이메일 알림", "finance": "재무", "login": "로그인", "notificationSettings": "알림 설정", "notificationTypes": "알림 유형", "save": "변경 사항 저장", "subscribe": "구독", - "telegramIdPlaceholder": "텔레그램 ID 입력", - "telegramNotification": "텔레그램 알림", - "unbind": "바인딩 해제", "updateSuccess": "업데이트 성공" }, "thirdParty": { diff --git a/apps/user/locales/no-NO/profile.json b/apps/user/locales/no-NO/profile.json index 8246c18..6812e16 100644 --- a/apps/user/locales/no-NO/profile.json +++ b/apps/user/locales/no-NO/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Endring i saldo", - "bind": "Gå til binding", "channels": "Varslingskanaler", - "emailNotification": "E-postvarsling", "finance": "Økonomi", "login": "Logg inn", "notificationSettings": "Varslingsinnstillinger", "notificationTypes": "Varslingstyper", "save": "Lagre endringer", "subscribe": "Abonner", - "telegramIdPlaceholder": "Skriv inn Telegram-ID", - "telegramNotification": "Telegram-varsling", - "unbind": "Løsne", "updateSuccess": "Oppdatering vellykket" }, "thirdParty": { diff --git a/apps/user/locales/pl-PL/profile.json b/apps/user/locales/pl-PL/profile.json index 7d7560d..63deb61 100644 --- a/apps/user/locales/pl-PL/profile.json +++ b/apps/user/locales/pl-PL/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Zmiana salda", - "bind": "Przejdź do wiązania", "channels": "Kanały powiadomień", - "emailNotification": "Powiadomienie e-mail", "finance": "Finanse", "login": "Zaloguj się", "notificationSettings": "Ustawienia powiadomień", "notificationTypes": "Typy powiadomień", "save": "Zapisz zmiany", "subscribe": "Subskrybuj", - "telegramIdPlaceholder": "Wprowadź Telegram ID", - "telegramNotification": "Powiadomienie Telegram", - "unbind": "Odwiąż", "updateSuccess": "Aktualizacja zakończona sukcesem" }, "thirdParty": { diff --git a/apps/user/locales/pt-BR/profile.json b/apps/user/locales/pt-BR/profile.json index 3498245..41dfc89 100644 --- a/apps/user/locales/pt-BR/profile.json +++ b/apps/user/locales/pt-BR/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Mudança de Saldo", - "bind": "Ir para Vinculação", "channels": "Canais de Notificação", - "emailNotification": "Notificação por e-mail", "finance": "Finanças", "login": "Login", "notificationSettings": "Configurações de notificação", "notificationTypes": "Tipos de Notificação", "save": "Salvar Alterações", "subscribe": "Inscrever-se", - "telegramIdPlaceholder": "Insira o ID do Telegram", - "telegramNotification": "Notificação do Telegram", - "unbind": "Desvincular", "updateSuccess": "Atualização bem-sucedida" }, "thirdParty": { diff --git a/apps/user/locales/ro-RO/profile.json b/apps/user/locales/ro-RO/profile.json index e2791d2..6c1b413 100644 --- a/apps/user/locales/ro-RO/profile.json +++ b/apps/user/locales/ro-RO/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Schimbare Sold", - "bind": "Mergi la Legare", "channels": "Canale de Notificare", - "emailNotification": "Notificare prin email", "finance": "Finanțe", "login": "Autentificare", "notificationSettings": "Setări notificări", "notificationTypes": "Tipuri de Notificare", "save": "Salvează Modificările", "subscribe": "Abonează-te", - "telegramIdPlaceholder": "Introduceți ID-ul Telegram", - "telegramNotification": "Notificare Telegram", - "unbind": "Dezleagă", "updateSuccess": "Actualizare reușită" }, "thirdParty": { diff --git a/apps/user/locales/ru-RU/profile.json b/apps/user/locales/ru-RU/profile.json index a3c1b3e..20b0442 100644 --- a/apps/user/locales/ru-RU/profile.json +++ b/apps/user/locales/ru-RU/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Изменение баланса", - "bind": "Перейти к привязке", "channels": "Каналы уведомлений", - "emailNotification": "Уведомление по электронной почте", "finance": "Финансы", "login": "Вход", "notificationSettings": "Настройки уведомлений", "notificationTypes": "Типы уведомлений", "save": "Сохранить изменения", "subscribe": "Подписаться", - "telegramIdPlaceholder": "Введите Telegram ID", - "telegramNotification": "Уведомление в Telegram", - "unbind": "Отвязать", "updateSuccess": "Успешно обновлено" }, "thirdParty": { diff --git a/apps/user/locales/th-TH/profile.json b/apps/user/locales/th-TH/profile.json index e2d28a2..46daad6 100644 --- a/apps/user/locales/th-TH/profile.json +++ b/apps/user/locales/th-TH/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "การเปลี่ยนแปลงยอดเงิน", - "bind": "ไปที่การผูก", "channels": "ช่องทางการแจ้งเตือน", - "emailNotification": "การแจ้งเตือนทางอีเมล", "finance": "การเงิน", "login": "เข้าสู่ระบบ", "notificationSettings": "การตั้งค่าการแจ้งเตือน", "notificationTypes": "ประเภทการแจ้งเตือน", "save": "บันทึกการเปลี่ยนแปลง", "subscribe": "สมัครสมาชิก", - "telegramIdPlaceholder": "กรอก Telegram ID", - "telegramNotification": "การแจ้งเตือนทาง Telegram", - "unbind": "ยกเลิกการผูก", "updateSuccess": "อัปเดตสำเร็จ" }, "thirdParty": { diff --git a/apps/user/locales/tr-TR/profile.json b/apps/user/locales/tr-TR/profile.json index 7a4e201..46d7828 100644 --- a/apps/user/locales/tr-TR/profile.json +++ b/apps/user/locales/tr-TR/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Bakiye Değişikliği", - "bind": "Bağlamaya Git", "channels": "Bildirim Kanalları", - "emailNotification": "E-posta Bildirimi", "finance": "Finans", "login": "Giriş", "notificationSettings": "Bildirim Ayarları", "notificationTypes": "Bildirim Türleri", "save": "Değişiklikleri Kaydet", "subscribe": "Abone Ol", - "telegramIdPlaceholder": "Telegram Kimliği girin", - "telegramNotification": "Telegram Bildirimi", - "unbind": "Bağlamayı Kaldır", "updateSuccess": "Güncelleme Başarılı" }, "thirdParty": { diff --git a/apps/user/locales/uk-UA/profile.json b/apps/user/locales/uk-UA/profile.json index fbc285f..2014090 100644 --- a/apps/user/locales/uk-UA/profile.json +++ b/apps/user/locales/uk-UA/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Зміна балансу", - "bind": "Перейти до прив'язки", "channels": "Канали сповіщень", - "emailNotification": "Сповіщення електронною поштою", "finance": "Фінанси", "login": "Увійти", "notificationSettings": "Налаштування сповіщень", "notificationTypes": "Типи сповіщень", "save": "Зберегти зміни", "subscribe": "Підписатися", - "telegramIdPlaceholder": "Введіть Telegram ID", - "telegramNotification": "Сповіщення Telegram", - "unbind": "Відв'язати", "updateSuccess": "Оновлення успішне" }, "thirdParty": { diff --git a/apps/user/locales/vi-VN/profile.json b/apps/user/locales/vi-VN/profile.json index e36d86d..33b4a12 100644 --- a/apps/user/locales/vi-VN/profile.json +++ b/apps/user/locales/vi-VN/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "Thay Đổi Số Dư", - "bind": "Đi đến Liên kết", "channels": "Kênh Thông Báo", - "emailNotification": "Thông báo Email", "finance": "Tài Chính", "login": "Đăng Nhập", "notificationSettings": "Cài đặt Thông báo", "notificationTypes": "Loại Thông Báo", "save": "Lưu Thay Đổi", "subscribe": "Đăng Ký", - "telegramIdPlaceholder": "Nhập Telegram ID", - "telegramNotification": "Thông báo Telegram", - "unbind": "Hủy liên kết", "updateSuccess": "Cập nhật thành công" }, "thirdParty": { diff --git a/apps/user/locales/zh-CN/profile.json b/apps/user/locales/zh-CN/profile.json index 28835c4..8242679 100644 --- a/apps/user/locales/zh-CN/profile.json +++ b/apps/user/locales/zh-CN/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "余额变动", - "bind": "去绑定", "channels": "通知渠道", - "emailNotification": "邮件通知", "finance": "财务相关", "login": "登录", "notificationSettings": "通知设置", "notificationTypes": "通知类型", "save": "保存更改", "subscribe": "订阅", - "telegramIdPlaceholder": "输入 Telegram ID", - "telegramNotification": "Telegram 通知", - "unbind": "解除绑定", "updateSuccess": "更新成功" }, "thirdParty": { diff --git a/apps/user/locales/zh-HK/profile.json b/apps/user/locales/zh-HK/profile.json index f4ed294..a3c2b05 100644 --- a/apps/user/locales/zh-HK/profile.json +++ b/apps/user/locales/zh-HK/profile.json @@ -9,18 +9,13 @@ }, "notify": { "balanceChange": "餘額變更", - "bind": "前往綁定", "channels": "通知渠道", - "emailNotification": "郵件通知", "finance": "財務", "login": "登錄", "notificationSettings": "通知設定", "notificationTypes": "通知類型", "save": "保存更改", "subscribe": "訂閱", - "telegramIdPlaceholder": "輸入 Telegram ID", - "telegramNotification": "Telegram 通知", - "unbind": "解除綁定", "updateSuccess": "更新成功" }, "thirdParty": { diff --git a/apps/user/services/common/index.ts b/apps/user/services/common/index.ts index 73b3bda..61ba129 100644 --- a/apps/user/services/common/index.ts +++ b/apps/user/services/common/index.ts @@ -1,5 +1,5 @@ // @ts-ignore - + // API 更新时间: // API 唯一标识: import * as auth from './auth'; diff --git a/apps/user/services/common/oauth.ts b/apps/user/services/common/oauth.ts index ff6a4c0..17e493f 100644 --- a/apps/user/services/common/oauth.ts +++ b/apps/user/services/common/oauth.ts @@ -32,7 +32,6 @@ 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 db26303..4318a44 100644 --- a/apps/user/services/common/typings.d.ts +++ b/apps/user/services/common/typings.d.ts @@ -152,6 +152,7 @@ declare namespace API { invite: InviteConfig; currency: CurrencyConfig; subscribe: SubscribeConfig; + verify_code: VerifyCodeConfig; oauth_methods: string[]; }; @@ -579,9 +580,6 @@ declare namespace API { referer_id: number; enable: boolean; is_admin?: boolean; - valid_email: boolean; - enable_email_notify: boolean; - enable_telegram_notify: boolean; enable_balance_notify: boolean; enable_login_notify: boolean; enable_subscribe_notify: boolean; @@ -686,6 +684,12 @@ declare namespace API { enable_reset_password_verify: boolean; }; + type VerifyCodeConfig = { + verify_code_expire_time: number; + verify_code_limit: number; + verify_code_interval: number; + }; + type VerifyConfig = { turnstile_site_key: string; turnstile_secret: string; diff --git a/apps/user/services/user/typings.d.ts b/apps/user/services/user/typings.d.ts index 6f64e80..fd5fccc 100644 --- a/apps/user/services/user/typings.d.ts +++ b/apps/user/services/user/typings.d.ts @@ -754,8 +754,6 @@ declare namespace API { }; type UpdateUserNotifyRequest = { - enable_email_notify: boolean; - enable_telegram_notify: boolean; enable_balance_notify: boolean; enable_login_notify: boolean; enable_subscribe_notify: boolean; @@ -782,9 +780,6 @@ declare namespace API { referer_id: number; enable: boolean; is_admin?: boolean; - valid_email: boolean; - enable_email_notify: boolean; - enable_telegram_notify: boolean; enable_balance_notify: boolean; enable_login_notify: boolean; enable_subscribe_notify: boolean; @@ -868,6 +863,12 @@ declare namespace API { created_at: number; }; + type VerifyCodeConfig = { + verify_code_expire_time: number; + verify_code_limit: number; + verify_code_interval: number; + }; + type VerifyConfig = { turnstile_site_key: string; turnstile_secret: string;