feat: better admin permissions (#5755)

* feat: add casbin admin permissions

* feat: improve audit logging to associate logs with actual operators and target users

* feat: enhance admin permissions and UI interactions for sensitive actions

* Refactor authz RBAC and tighten channel permissions

* Split channel authz field policy

* Address channel authz review findings
This commit is contained in:
Calcium-Ion
2026-06-27 17:01:59 +08:00
committed by GitHub
parent 6c35e1ef26
commit 4aee5f7d5a
52 changed files with 2778 additions and 255 deletions
+23 -3
View File
@@ -223,8 +223,10 @@
"Admin": "Administrateur",
"Admin access required": "Accès administrateur requis",
"Admin area": "Espace administrateur",
"Admin Channel Permissions": "Autorisations des canaux administrateur",
"Admin notes (only visible to admins)": "Notes d'administration (visibles uniquement par les administrateurs)",
"Admin Only": "Administrateur uniquement",
"Admin Permissions": "Autorisations administrateur",
"Administer user accounts and roles.": "Gérer les comptes d'utilisateurs et les rôles.",
"Administrator account": "Compte administrateur",
"Administrator username": "Nom d'utilisateur administrateur",
@@ -716,6 +718,7 @@
"Channel ID is required": "L'ID du canal est requis",
"Channel key": "Clé du canal",
"Channel key unlocked": "Clé de canal déverrouillée",
"Channel Management": "Gestion des canaux",
"Channel models": "Modèles de canaux",
"Channel name is required": "Le nom du canal est requis",
"Channel test completed": "Test du canal terminé",
@@ -1075,6 +1078,7 @@
"Create cache": "Créer le cache",
"Create cache ratio": "Créer un ratio de cache",
"Create Channel": "Créer un canal",
"Create channels or edit keys, base URLs, and overrides.": "Créer des canaux ou modifier les clés, URL de base et règles de remplacement.",
"Create Code": "Créer un code",
"Create credentials for the root user": "Créer les identifiants pour le compte administrateur",
"Create deployment": "Créer un déploiement",
@@ -1193,6 +1197,7 @@
"Default": "Par défaut",
"Default (New Frontend)": "Par défaut (Nouveau frontend)",
"Default / range": "Défaut / plage",
"Default administrator permissions can be overridden for this user.": "Les autorisations administrateur par défaut peuvent être remplacées pour cet utilisateur.",
"Default API Version *": "Version API par défaut *",
"Default API version for this channel": "Version API par défaut pour ce canal",
"Default Bearer": "Bearer par defaut",
@@ -1380,8 +1385,8 @@
"Drawing": "Dessin",
"Drawing logs": "Journaux de dessin",
"Drawing Logs": "Journaux de dessin",
"Drawing task records": "Historique des tâches de dessin",
"Drawing task polling": "Interrogation des tâches de dessin",
"Drawing task records": "Historique des tâches de dessin",
"Duplicate": "Dupliquer",
"Duplicate group names: {{names}}": "Noms de groupe en double : {{names}}",
"Duplicate source model mappings are not allowed": "Les mappages de modèles source en double ne sont pas autorisés",
@@ -1448,6 +1453,7 @@
"Edit API Shortcut": "Modifier le raccourci API",
"Edit billing ratios and user-selectable groups in one table.": "Modifiez les ratios de facturation et les groupes sélectionnables par les utilisateurs dans un seul tableau.",
"Edit Channel": "Modifier le canal",
"Edit channel routing": "Modifier le routage des canaux",
"Edit chat preset": "Modifier le préréglage de chat",
"Edit discount tier": "Modifier le palier de remise",
"Edit FAQ": "Modifier la FAQ",
@@ -1458,6 +1464,7 @@
"Edit model": "Modifier le modèle",
"Edit Model": "Modifier le modèle",
"Edit model pricing": "Modifier la tarification du modèle",
"Edit non-sensitive settings such as models, groups, and routing rules.": "Modifier les paramètres non sensibles comme les modèles, les groupes et les règles de routage.",
"Edit OAuth Provider": "Modifier le fournisseur OAuth",
"Edit payment method": "Modifier le mode de paiement",
"Edit Prefill Group": "Modifier le groupe de préremplissage",
@@ -1465,6 +1472,7 @@
"Edit ratio override": "Modifier le remplacement de ratio",
"Edit Rule": "Modifier la règle",
"Edit selectable group": "Modifier le groupe sélectionnable",
"Edit sensitive channel settings": "Modifier les paramètres sensibles des canaux",
"Edit Tag": "Modifier l'étiquette",
"Edit Tag:": "Modifier l'étiquette :",
"Edit Uptime Kuma Group": "Modifier le groupe Uptime Kuma",
@@ -2799,6 +2807,7 @@
"No payment methods configured. Click \"Add method\" or use templates to get started.": "Aucune méthode de paiement configurée. Cliquez sur \"Ajouter une méthode\" ou utilisez des modèles pour commencer.",
"No payment methods match your search": "Aucune méthode de paiement ne correspond à votre recherche",
"No performance data available": "Aucune donnée de performance disponible",
"No permission to perform this action": "Vous navez pas lautorisation deffectuer cette action",
"No plans available": "Aucun plan disponible",
"No preference": "Aucune préférence",
"No prefill groups yet": "Aucun groupe de préremplissage pour l'instant",
@@ -2974,6 +2983,7 @@
"OpenAIMax": "OpenAIMax",
"OpenRouter": "OpenRouter",
"opens in an external client. Trigger it from the sidebar or API key actions to launch the configured application.": "s'ouvre dans un client externe. Déclenchez-le depuis la barre latérale ou les actions de clé API pour lancer l'application configurée.",
"Operate channels": "Exploiter les canaux",
"Operation": "Opération",
"operation and charging behavior": "à lexploitation et à la facturation",
"Operation Audit Info": "Informations d'audit d'opération",
@@ -3432,6 +3442,7 @@
"Raw Quota": "Quota brut",
"Re-enable on success": "Réactiver en cas de succès",
"Re-login": "Se reconnecter",
"Read channels": "Lire les canaux",
"Ready": "Prêt",
"Ready to initialize": "Prêt à initialiser",
"Ready to simplify": "Prêt à simplifier",
@@ -3603,6 +3614,7 @@
"Reroll": "Relancer",
"Research, analysis, scientific reasoning": "Recherche, analyse, raisonnement scientifique",
"Resend ({{seconds}}s)": "Renvoyer ({{seconds}}s)",
"Reserved for viewing complete channel keys after secure verification.": "Réservé à l'affichage des clés complètes des canaux après une vérification sécurisée.",
"Reset": "Réinitialiser",
"Reset 2FA": "Réinitialiser la 2FA",
"Reset 2FA for {{username}}? The user must set up 2FA again to continue using it.": "Réinitialiser la 2FA de {{username}} ? Lutilisateur devra configurer à nouveau la 2FA pour continuer à lutiliser.",
@@ -3739,7 +3751,6 @@
"Save Preferences": "Enregistrer les préférences",
"Save preview": "Aperçu de lenregistrement",
"Save rate limits": "Enregistrer les limites de débit",
"Save token limits": "Enregistrer les limites de jetons",
"Save sensitive words": "Enregistrer les mots sensibles",
"Save Settings": "Enregistrer les paramètres",
"Save sidebar modules": "Enregistrer les modules de la barre latérale",
@@ -3748,6 +3759,7 @@
"Save Stripe settings": "Enregistrer les paramètres Stripe",
"Save these backup codes in a safe place. Each code can only be used once.": "Enregistrez ces codes de secours dans un endroit sûr. Chaque code ne peut être utilisé qu'une seule fois.",
"Save these codes in a safe place. Each code can only be used once.": "Enregistrez ces codes dans un endroit sûr. Chaque code ne peut être utilisé qu'une seule fois.",
"Save token limits": "Enregistrer les limites de jetons",
"Save tool prices": "Enregistrer les prix des outils",
"Save Waffo Pancake settings": "Enregistrer les paramètres Waffo Pancake",
"Save Worker settings": "Enregistrer les paramètres Worker",
@@ -3891,6 +3903,7 @@
"Send email alerts when a user falls below this quota": "Envoyer des alertes par e-mail lorsqu'un utilisateur descend en dessous de ce quota",
"Send reset email": "Envoyer l'e-mail de réinitialisation",
"Sending...": "Envoi en cours...",
"Sensitive channel settings are read-only for your account.": "Les paramètres sensibles des canaux sont en lecture seule pour votre compte.",
"Sensitive Words": "Mots sensibles",
"Sent the API key to FluentRead.": "Clé API envoyée à FluentRead.",
"Separate image/audio prices are enabled.": "Les prix séparés pour limage et laudio sont activés.",
@@ -3976,11 +3989,11 @@
"Simple mode only returns message; status code and error type use system defaults.": "Le mode simple ne retourne que le message ; le code de statut et le type d'erreur utilisent les valeurs par défaut.",
"Simple mode: prune objects by type, e.g. redacted_thinking.": "Mode simple : nettoyer les objets par type, ex. redacted_thinking.",
"Single Key": "Clé unique",
"Skip async task polling delay": "Ignorer le délai de polling des tâches asynchrones",
"Site & Branding": "Site et marque",
"Site Key": "Clé du site",
"Size:": "Taille :",
"sk_xxx or rk_xxx": "sk_xxx ou rk_xxx",
"Skip async task polling delay": "Ignorer le délai de polling des tâches asynchrones",
"Skip retry on failure": "Ne pas réessayer en cas d'échec",
"Skip SMTP TLS certificate verification": "Ignorer la vérification du certificat TLS SMTP",
"Skip to Main": "Aller au contenu principal",
@@ -4206,6 +4219,7 @@
"Test all {{count}} models": "Tester les {{count}} modèles",
"Test All Channels": "Tester tous les canaux",
"Test Channel Connection": "Tester la connexion du canal",
"Test channels, refresh balances, and enable/disable individual, batch, or tagged channels.": "Tester les canaux, actualiser les soldes et activer/désactiver des canaux individuellement, par lot ou par tag.",
"Test Connection": "Tester la connexion",
"Test connectivity for:": "Tester la connectivité pour :",
"Test failed": "Échec du test",
@@ -4739,6 +4753,8 @@
"Vidu": "Vidu",
"View": "Afficher",
"View all currently available models": "Voir tous les modèles actuellement disponibles",
"View channel lists and details without secrets.": "Afficher les listes et détails des canaux sans secrets.",
"View channel secrets": "Voir les secrets des canaux",
"View detailed information about this user including balance, usage statistics, and invitation details.": "Afficher des informations détaillées sur cet utilisateur, y compris le solde, les statistiques d'utilisation et les détails d'invitation.",
"View details": "Voir les détails",
"View document": "Afficher le document",
@@ -4881,8 +4897,10 @@
"You can close this tab once the binding completes or a success message appears in the original window.": "Vous pouvez fermer cet onglet une fois la liaison terminée ou qu'un message de succès apparaît dans la fenêtre d'origine.",
"You can manually add them in \"Custom Model Names\", click \"Fill\" and then submit, or use the operations below to handle automatically.": "Vous pouvez les ajouter manuellement dans \"Noms de modèles personnalisés\", cliquer sur \"Remplir\" puis soumettre, ou utiliser les opérations ci-dessous pour les gérer automatiquement.",
"You can only check in once per day": "Vous ne pouvez vous connecter qu'une fois par jour",
"You can still edit non-sensitive operations fields such as models, groups, priority, and weight.": "Vous pouvez toujours modifier les champs opérationnels non sensibles, comme les modèles, les groupes, la priorité et le poids.",
"You commit not to use this system to implement, assist with, or indirectly implement acts that violate applicable laws and regulations, regulatory requirements, platform rules, public interests, or the lawful rights and interests of third parties.": "Vous vous engagez à ne pas utiliser ce système pour mettre en œuvre, faciliter ou indirectement réaliser des actes violant les lois et règlements applicables, les exigences réglementaires, les règles des plateformes, lintérêt public ou les droits et intérêts légitimes de tiers.",
"You commit to using upstream APIs, accounts, keys, quotas, and service capabilities only within the scope of lawful authorization obtained from upstream service providers, model service providers, or relevant rights holders, and will not conduct unauthorized resale, trafficking, distribution, or other non-compliant commercialization.": "Vous vous engagez à utiliser les API, comptes, clés, quotas et capacités de service en amont uniquement dans le cadre dune autorisation légale obtenue auprès des fournisseurs de services en amont, fournisseurs de modèles ou ayants droit concernés, et à ne pas effectuer de revente, trafic, distribution ou autre commercialisation non conforme sans autorisation.",
"You do not have permission to edit sensitive channel settings.": "Vous navez pas lautorisation de modifier les paramètres sensibles des canaux.",
"You don't have necessary permission": "Vous n'avez pas la permission nécessaire",
"You have legally obtained authorization for the connected model APIs, accounts, keys, and quotas.": "Vous avez légalement obtenu lautorisation pour les API de modèles, comptes, clés et quotas connectés.",
"You have unsaved changes": "Vous avez des modifications non enregistrées",
@@ -4893,6 +4911,8 @@
"You understand this compliance reminder is only for risk notice and does not constitute legal advice, a compliance review conclusion, or a guarantee of the legality of your use of this system; you should consult professional legal or compliance advisors based on your actual business scenario.": "Vous comprenez que ce rappel de conformité est uniquement un avis de risque et ne constitue ni un conseil juridique, ni une conclusion dexamen de conformité, ni une garantie de la légalité de votre utilisation de ce système ; vous devez consulter des conseillers juridiques ou conformité professionnels selon votre situation réelle.",
"You will be redirected to Telegram to complete the binding process.": "Vous serez redirigé vers Telegram pour terminer le processus de liaison.",
"You'll be redirected automatically. You can return to the previous page if nothing happens after a few seconds.": "Vous serez redirigé automatiquement. Vous pouvez revenir à la page précédente si rien ne se passe après quelques secondes.",
"Your account can edit sensitive channel settings.": "Votre compte peut modifier les paramètres sensibles des canaux.",
"Your account cannot edit sensitive channel settings.": "Votre compte ne peut pas modifier les paramètres sensibles des canaux.",
"your AI integration?": "votre intégration IA ?",
"Your Azure OpenAI endpoint URL": "Votre URL de point de terminaison Azure OpenAI",
"Your Bot Name": "Nom de votre Bot",