Add invite links with admin-configurable config creation limits.

Admins can create shareable links that allow redeeming a VPN config a set number of times (or unlimited).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
orohi
2026-07-26 01:23:16 +03:00
co-authored by Cursor
parent 5386c4d40e
commit 7b3d8aac34
11 changed files with 1197 additions and 0 deletions
+36
View File
@@ -1,6 +1,7 @@
{
"nav_servers": "سرورها",
"nav_users": "کاربران",
"nav_invites": "لینک دعوت",
"nav_settings": "تنظیمات",
"nav_connections": "اتصال‌ها",
"nav_logout": "خروج",
@@ -194,6 +195,41 @@
"guest_not_found": "404 یافت نشد",
"guest_not_found_desc": "دسترسی مهمان غیرفعال است یا لینک نامعتبر است.",
"wrong_guest_password": "رمز عبور اشتباه است",
"invites_title": "لینک‌های دعوت",
"invites_hint": "لینک قابل اشتراک بسازید. با لینک می‌توان کانفیگ VPN ساخت — تعداد را شما تعیین می‌کنید.",
"invites_empty": "هنوز لینکی نیست",
"invites_empty_desc": "لینک بسازید و به اشتراک بگذارید — بدون ثبت‌نام.",
"invite_create": "ساخت لینک",
"invite_edit": "ویرایش لینک",
"invite_active": "فعال",
"invite_expired": "منقضی",
"invite_exhausted": "ظرفیت تمام شده",
"invite_uses": "استفاده‌ها",
"invite_name_label": "نام لینک",
"invite_max_uses_label": "حداکثر کانفیگ",
"invite_max_uses_hint": "چند بار می‌توان با این لینک کانفیگ ساخت. 0 = نامحدود.",
"invite_user_label": "کاربر ذخیره‌سازی",
"invite_user_hint": "کانفیگ‌های ساخته‌شده به این کاربر پنل وصل می‌شوند.",
"invite_user_required": "یک کاربر انتخاب کنید",
"invite_password_label": "رمز عبور (اختیاری)",
"invite_expires_label": "انقضا (اختیاری)",
"invite_clear_expires": "حذف تاریخ انقضا",
"invite_note_label": "یادداشت (فقط ادمین)",
"invite_note_placeholder": "توضیح داخلی",
"invite_reset_used": "ریست شمارنده استفاده",
"invite_created": "لینک ساخته شد (URL کپی شد)",
"invite_updated": "لینک به‌روز شد",
"invite_deleted": "لینک حذف شد",
"invite_delete_confirm": "این لینک حذف شود؟",
"invite_public_title": "دعوت",
"invite_public_subtitle": "دریافت کانفیگ VPN با لینک دعوت",
"invite_protected_desc": "این لینک با رمز محافظت شده است.",
"invite_get_config_hint": "هر کلیک یک کانفیگ جدید می‌سازد و یک استفاده کم می‌کند",
"invite_uses_left": "باقی‌مانده: {}",
"invite_uses_left_unlimited": "ساخته‌شده: {} (نامحدود)",
"invite_not_found": "404 یافت نشد",
"invite_not_found_desc": "لینک نامعتبر است یا حذف شده.",
"wrong_invite_password": "رمز عبور اشتباه است",
"public_link_label": "لینک عمومی",
"disabled": "غیرفعال",
"out_of": "از",