Implement Cloudflare custom domain management flow

- Added support for connecting, refreshing, and removing custom domains through Cloudflare.
- Updated API routes and validation schemas to handle new domain actions.
- Refactored domain management logic in the dashboard to accommodate Cloudflare integration.
- Enhanced user experience with clear status messages and DNS instructions for domain setup.
- Updated translations and UI components to reflect new domain management features.
This commit is contained in:
Rotimi Best
2026-03-27 09:12:53 +01:00
parent 3919ff6c2f
commit f3d212f984
23 changed files with 1376 additions and 244 deletions
@@ -311,6 +311,7 @@
"creating_new": "नए अनुवाद बनाना विफल रहा"
},
"exercise": {
"points_required_auto_grade": "सहेजने से पहले प्रत्येक प्रश्न के लिए धनात्मक अंक निर्धारित करें।",
"success": "सफलतापूर्वक सहेजा गया",
"submission_updated": "सबमिशन को अद्यतन किया गया",
"error_fetching": "फ़ेचिंग अभ्यास विफल रहा, कृपया पृष्ठ पुनः लोड करें"
@@ -750,6 +751,8 @@
"certificates": {
"title": "प्रमाणपत्र",
"certificate_settings": "प्रमाणपत्र सेटिंग्स",
"tab_design": "डिज़ाइन",
"tab_settings": "सेटिंग्स",
"theme": "एक थीम चुनें",
"logo": "ब्रांड लोगो",
"to_update": "अपनी ब्रांड छवि को अद्यतन करने के लिए, पर जाएँ",
@@ -1071,6 +1074,9 @@
"finish": "ख़त्म करो",
"next": "अगला",
"check": "जांचें",
"auto_graded_badge": "Auto-graded",
"manual_grading_required_badge": "Manual grading required",
"points_required_auto_grade": "Points must be greater than 0 for auto-graded exercises.",
"analytics": {
"submissions": "प्रस्तुतियाँ",
"individual": {
@@ -1139,6 +1145,8 @@
"link": "कड़ियाँ"
},
"select_type": "प्रकार चुनें",
"question_type_auto_gradable": "Auto",
"question_type_manual_grading": "Manual",
"premium_question_type": "इस प्रश्न प्रकार का उपयोग करने के लिए अपग्रेड करें"
},
"delete_confirmation": {
@@ -1608,6 +1616,27 @@
"nav_certificates": "प्रमाणपत्र",
"nav_landing_page": "लैंडिंग पृष्ठ",
"nav_settings": "सेटिंग्स"
},
"completion": {
"modal": {
"title": "पाठ्यक्रम की आवश्यकताएँ पूर्ण!",
"subtitle": "बधाई हो - आप अपना प्रमाणपत्र कभी भी देख और डाउनलोड कर सकते हैं।",
"view_certificate": "प्रमाणपत्र देखें",
"later": "बंद करें"
}
},
"certification": {
"rules_heading": "प्रमाणन नियम",
"deadline_label": "प्रमाणीकरण की समय सीमा",
"deadline_helper": "छात्रों को इस दिनांक समय (स्थानीय समय) से पहले पूर्णता प्रतिशत पूरा करना होगा। बिना किसी समय सीमा के खाली छोड़ दें.",
"threshold_label": "न्यूनतम पूर्णता (%)",
"threshold_helper": "प्रमाणपत्र (0-100) अर्जित करने के लिए संयुक्त पाठ और अभ्यास प्रगति की आवश्यकता है। डिफ़ॉल्ट 100% है.",
"email_message_label": "प्रमाणीकरण ईमेल संदेश",
"email_message_helper": "जब कोई छात्र आवश्यकताओं को पूरा करता है तो ईमेल में वैकल्पिक संदेश दिखाया जाता है। प्रमाणपत्र पृष्ठ का एक लिंक हमेशा शामिल किया जाता है।",
"email_message_placeholder": "जैसे हमें आपकी प्रगति पर गर्व है - सीखते रहें!"
},
"certificates": {
"progress_hint": "{वर्तमान}% पूर्ण (डाउनलोड करने के लिए {आवश्यक}% आवश्यक)"
}
},
"courses": {
@@ -1785,7 +1814,20 @@
"refresh": "ताज़ा करें",
"remove": "हटाओ",
"custom_favicon": "कस्टम फ़ेविकॉन",
"custom_code": "कस्टम कोड"
"custom_code": "कस्टम कोड",
"reconnect": "डोमेन पुनः कनेक्ट करें",
"reconnect_hint": "नए क्लाउडफ़ेयर सेटअप रिकॉर्ड बनाने के लिए इस डोमेन को पुनः कनेक्ट करें।",
"status_verified": "सत्यापित",
"status_pending_dns": "लंबित डीएनएस",
"status_pending_verification": "सत्यापन लंबित है",
"status_reconnect_required": "पुनः कनेक्ट करना आवश्यक है",
"status_error": "ध्यान देने की जरूरत है",
"status_removed": "हटा दिया गया",
"verified_description": "यह कस्टम डोमेन सक्रिय और सत्यापित है.",
"pending_dns_description": "नीचे DNS रिकॉर्ड जोड़ें, फिर सत्यापन ताज़ा करें।",
"pending_verification_description": "डीएनएस रिकॉर्ड पाए गए. एसएसएल जारी करना या सत्यापन अभी भी जारी है।",
"reconnect_description": "इस डोमेन को नए क्लाउडफ़ेयर सेटअप फ़्लो के माध्यम से फिर से कनेक्ट करने की आवश्यकता है।",
"error_description": "यह कस्टम डोमेन मौजूद है, लेकिन सत्यापन अभी तक पूरा नहीं हुआ है।"
}
},
"quiz": {