feat(api-tokens): manage multiple named tokens; add tab/section anchor URLs
Replace the single regenerable API token with a named-token list: - New ApiToken model + service with constant-time auth matching - Seeder migrates the legacy `apiToken` setting into a "default" row - Security tab gets create/enable/delete UI; api-docs page links to it - Dedicated "API Tokens" section in the in-panel docs URL anchors now reflect the active tab/section on Settings, Xray, and API Docs pages, so deep links like `/panel/settings#security` work. Translations for the 8 new SecurityTab strings added across all locales.
This commit is contained in:
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "أدخل الرمز من التطبيق لتغيير بيانات اعتماد المسؤول.",
|
||||
"twoFactorModalSetSuccess": "تم إنشاء المصادقة الثنائية بنجاح",
|
||||
"twoFactorModalDeleteSuccess": "تم حذف المصادقة الثنائية بنجاح",
|
||||
"twoFactorModalError": "رمز خاطئ"
|
||||
"twoFactorModalError": "رمز خاطئ",
|
||||
"show": "إظهار",
|
||||
"hide": "إخفاء",
|
||||
"apiTokenNew": "رمز جديد",
|
||||
"apiTokenName": "الاسم",
|
||||
"apiTokenNamePlaceholder": "مثل central-panel-a",
|
||||
"apiTokenNameRequired": "الاسم مطلوب",
|
||||
"apiTokenEmpty": "لا توجد رموز بعد — أنشئ واحدًا لمصادقة الروبوتات أو اللوحات البعيدة.",
|
||||
"apiTokenDeleteWarning": "أي عميل يستخدم هذا الرمز سيفقد المصادقة فورًا."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "تم تغيير المعلمات.",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "Enter the code from the application to change administrator credentials.",
|
||||
"twoFactorModalSetSuccess": "Two-factor authentication has been successfully established",
|
||||
"twoFactorModalDeleteSuccess": "Two-factor authentication has been successfully deleted",
|
||||
"twoFactorModalError": "Wrong code"
|
||||
"twoFactorModalError": "Wrong code",
|
||||
"show": "Show",
|
||||
"hide": "Hide",
|
||||
"apiTokenNew": "New token",
|
||||
"apiTokenName": "Name",
|
||||
"apiTokenNamePlaceholder": "e.g. central-panel-a",
|
||||
"apiTokenNameRequired": "Name is required",
|
||||
"apiTokenEmpty": "No tokens yet — create one to authenticate bots or remote panels.",
|
||||
"apiTokenDeleteWarning": "Any caller using this token will stop authenticating immediately."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "The parameters have been changed.",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "Ingrese el código de la aplicación para cambiar las credenciales del administrador.",
|
||||
"twoFactorModalSetSuccess": "La autenticación de dos factores se ha establecido con éxito",
|
||||
"twoFactorModalDeleteSuccess": "La autenticación de dos factores se ha eliminado con éxito",
|
||||
"twoFactorModalError": "Código incorrecto"
|
||||
"twoFactorModalError": "Código incorrecto",
|
||||
"show": "Mostrar",
|
||||
"hide": "Ocultar",
|
||||
"apiTokenNew": "Nuevo token",
|
||||
"apiTokenName": "Nombre",
|
||||
"apiTokenNamePlaceholder": "por ejemplo central-panel-a",
|
||||
"apiTokenNameRequired": "El nombre es obligatorio",
|
||||
"apiTokenEmpty": "Aún no hay tokens — crea uno para autenticar bots o paneles remotos.",
|
||||
"apiTokenDeleteWarning": "Cualquier cliente que use este token dejará de autenticarse inmediatamente."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "Los parámetros han sido modificados.",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "برای تغییر اعتبارنامههای مدیر، کد را از برنامه وارد کنید.",
|
||||
"twoFactorModalSetSuccess": "احراز هویت دو مرحلهای با موفقیت برقرار شد",
|
||||
"twoFactorModalDeleteSuccess": "احراز هویت دو مرحلهای با موفقیت حذف شد",
|
||||
"twoFactorModalError": "کد نادرست"
|
||||
"twoFactorModalError": "کد نادرست",
|
||||
"show": "نمایش",
|
||||
"hide": "پنهان",
|
||||
"apiTokenNew": "توکن جدید",
|
||||
"apiTokenName": "نام",
|
||||
"apiTokenNamePlaceholder": "مثلاً central-panel-a",
|
||||
"apiTokenNameRequired": "نام الزامی است",
|
||||
"apiTokenEmpty": "هنوز توکنی وجود ندارد — برای احراز هویت رباتها یا پنلهای راه دور یکی بسازید.",
|
||||
"apiTokenDeleteWarning": "هر کلاینتی که از این توکن استفاده میکند بلافاصله احراز هویتش قطع میشود."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "پارامترها تغییر کردهاند.",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "Masukkan kode dari aplikasi untuk mengubah kredensial administrator.",
|
||||
"twoFactorModalSetSuccess": "Autentikasi dua faktor telah berhasil dibuat",
|
||||
"twoFactorModalDeleteSuccess": "Autentikasi dua faktor telah berhasil dihapus",
|
||||
"twoFactorModalError": "Kode salah"
|
||||
"twoFactorModalError": "Kode salah",
|
||||
"show": "Tampilkan",
|
||||
"hide": "Sembunyikan",
|
||||
"apiTokenNew": "Token baru",
|
||||
"apiTokenName": "Nama",
|
||||
"apiTokenNamePlaceholder": "misalnya central-panel-a",
|
||||
"apiTokenNameRequired": "Nama wajib diisi",
|
||||
"apiTokenEmpty": "Belum ada token — buat satu untuk mengautentikasi bot atau panel jarak jauh.",
|
||||
"apiTokenDeleteWarning": "Setiap pemanggil yang menggunakan token ini akan berhenti terautentikasi segera."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "Parameter telah diubah.",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "管理者の認証情報を変更するには、アプリケーションからコードを入力してください。",
|
||||
"twoFactorModalSetSuccess": "二要素認証が正常に設定されました",
|
||||
"twoFactorModalDeleteSuccess": "二要素認証が正常に削除されました",
|
||||
"twoFactorModalError": "コードが間違っています"
|
||||
"twoFactorModalError": "コードが間違っています",
|
||||
"show": "表示",
|
||||
"hide": "非表示",
|
||||
"apiTokenNew": "新規トークン",
|
||||
"apiTokenName": "名前",
|
||||
"apiTokenNamePlaceholder": "例: central-panel-a",
|
||||
"apiTokenNameRequired": "名前は必須です",
|
||||
"apiTokenEmpty": "トークンがまだありません — ボットやリモートパネルを認証するために作成してください。",
|
||||
"apiTokenDeleteWarning": "このトークンを使用しているクライアントは直ちに認証できなくなります。"
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "パラメーターが変更されました。",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "Insira o código do aplicativo para alterar as credenciais do administrador.",
|
||||
"twoFactorModalSetSuccess": "A autenticação de dois fatores foi estabelecida com sucesso",
|
||||
"twoFactorModalDeleteSuccess": "A autenticação de dois fatores foi excluída com sucesso",
|
||||
"twoFactorModalError": "Código incorreto"
|
||||
"twoFactorModalError": "Código incorreto",
|
||||
"show": "Mostrar",
|
||||
"hide": "Ocultar",
|
||||
"apiTokenNew": "Novo token",
|
||||
"apiTokenName": "Nome",
|
||||
"apiTokenNamePlaceholder": "ex.: central-panel-a",
|
||||
"apiTokenNameRequired": "O nome é obrigatório",
|
||||
"apiTokenEmpty": "Nenhum token ainda — crie um para autenticar bots ou painéis remotos.",
|
||||
"apiTokenDeleteWarning": "Qualquer cliente usando este token deixará de se autenticar imediatamente."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "Os parâmetros foram alterados.",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "Введите код из приложения, чтобы изменить учетные данные администратора.",
|
||||
"twoFactorModalSetSuccess": "Двухфакторная аутентификация была успешно установлена",
|
||||
"twoFactorModalDeleteSuccess": "Двухфакторная аутентификация была успешно удалена",
|
||||
"twoFactorModalError": "Неверный код"
|
||||
"twoFactorModalError": "Неверный код",
|
||||
"show": "Показать",
|
||||
"hide": "Скрыть",
|
||||
"apiTokenNew": "Новый токен",
|
||||
"apiTokenName": "Имя",
|
||||
"apiTokenNamePlaceholder": "например, central-panel-a",
|
||||
"apiTokenNameRequired": "Имя обязательно",
|
||||
"apiTokenEmpty": "Токенов пока нет — создайте один для аутентификации ботов или удалённых панелей.",
|
||||
"apiTokenDeleteWarning": "Любой клиент, использующий этот токен, немедленно потеряет аутентификацию."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "Настройки изменены",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "Yönetici kimlik bilgilerini değiştirmek için uygulamadaki kodu girin.",
|
||||
"twoFactorModalSetSuccess": "İki faktörlü kimlik doğrulama başarıyla kuruldu",
|
||||
"twoFactorModalDeleteSuccess": "İki faktörlü kimlik doğrulama başarıyla silindi",
|
||||
"twoFactorModalError": "Yanlış kod"
|
||||
"twoFactorModalError": "Yanlış kod",
|
||||
"show": "Göster",
|
||||
"hide": "Gizle",
|
||||
"apiTokenNew": "Yeni token",
|
||||
"apiTokenName": "Ad",
|
||||
"apiTokenNamePlaceholder": "örn. central-panel-a",
|
||||
"apiTokenNameRequired": "Ad zorunludur",
|
||||
"apiTokenEmpty": "Henüz token yok — bot veya uzak panelleri doğrulamak için bir tane oluşturun.",
|
||||
"apiTokenDeleteWarning": "Bu tokenı kullanan tüm istemciler anında kimlik doğrulamasını kaybeder."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "Parametreler değiştirildi.",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "Введіть код з додатку, щоб змінити облікові дані адміністратора.",
|
||||
"twoFactorModalSetSuccess": "Двофакторна аутентифікація була успішно встановлена",
|
||||
"twoFactorModalDeleteSuccess": "Двофакторна аутентифікація була успішно видалена",
|
||||
"twoFactorModalError": "Невірний код"
|
||||
"twoFactorModalError": "Невірний код",
|
||||
"show": "Показати",
|
||||
"hide": "Сховати",
|
||||
"apiTokenNew": "Новий токен",
|
||||
"apiTokenName": "Назва",
|
||||
"apiTokenNamePlaceholder": "наприклад, central-panel-a",
|
||||
"apiTokenNameRequired": "Назва обов'язкова",
|
||||
"apiTokenEmpty": "Поки немає токенів — створіть один для автентифікації ботів або віддалених панелей.",
|
||||
"apiTokenDeleteWarning": "Будь-який клієнт, що використовує цей токен, негайно втратить автентифікацію."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "Параметри було змінено.",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "Nhập mã từ ứng dụng để thay đổi thông tin xác thực quản trị viên.",
|
||||
"twoFactorModalSetSuccess": "Xác thực hai yếu tố đã được thiết lập thành công",
|
||||
"twoFactorModalDeleteSuccess": "Xác thực hai yếu tố đã được xóa thành công",
|
||||
"twoFactorModalError": "Mã sai"
|
||||
"twoFactorModalError": "Mã sai",
|
||||
"show": "Hiển thị",
|
||||
"hide": "Ẩn",
|
||||
"apiTokenNew": "Token mới",
|
||||
"apiTokenName": "Tên",
|
||||
"apiTokenNamePlaceholder": "ví dụ: central-panel-a",
|
||||
"apiTokenNameRequired": "Tên là bắt buộc",
|
||||
"apiTokenEmpty": "Chưa có token nào — tạo một token để xác thực bot hoặc panel từ xa.",
|
||||
"apiTokenDeleteWarning": "Mọi client đang dùng token này sẽ ngừng xác thực ngay lập tức."
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "Các tham số đã được thay đổi.",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "输入应用程序中的代码以更改管理员凭据。",
|
||||
"twoFactorModalSetSuccess": "双因素认证已成功建立",
|
||||
"twoFactorModalDeleteSuccess": "双因素认证已成功删除",
|
||||
"twoFactorModalError": "验证码错误"
|
||||
"twoFactorModalError": "验证码错误",
|
||||
"show": "显示",
|
||||
"hide": "隐藏",
|
||||
"apiTokenNew": "新建令牌",
|
||||
"apiTokenName": "名称",
|
||||
"apiTokenNamePlaceholder": "例如 central-panel-a",
|
||||
"apiTokenNameRequired": "名称必填",
|
||||
"apiTokenEmpty": "暂无令牌 — 创建一个用于认证机器人或远程面板。",
|
||||
"apiTokenDeleteWarning": "使用此令牌的任何调用方将立即无法认证。"
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "参数已更改。",
|
||||
|
||||
@@ -589,7 +589,15 @@
|
||||
"twoFactorModalChangeCredentialsStep": "輸入應用程式中的代碼以更改管理員憑證。",
|
||||
"twoFactorModalSetSuccess": "雙重身份驗證已成功建立",
|
||||
"twoFactorModalDeleteSuccess": "雙重身份驗證已成功刪除",
|
||||
"twoFactorModalError": "驗證碼錯誤"
|
||||
"twoFactorModalError": "驗證碼錯誤",
|
||||
"show": "顯示",
|
||||
"hide": "隱藏",
|
||||
"apiTokenNew": "新增令牌",
|
||||
"apiTokenName": "名稱",
|
||||
"apiTokenNamePlaceholder": "例如 central-panel-a",
|
||||
"apiTokenNameRequired": "名稱必填",
|
||||
"apiTokenEmpty": "尚無令牌 — 建立一個以認證機器人或遠端面板。",
|
||||
"apiTokenDeleteWarning": "使用此令牌的任何呼叫方將立即無法認證。"
|
||||
},
|
||||
"toasts": {
|
||||
"modifySettings": "參數已更改。",
|
||||
|
||||
Reference in New Issue
Block a user