- Add session-based authentication for web-UI (Login.vue, AuthController) - Add AuthSessionMiddleware: redirects unauthenticated users to /login - Add ApiKeyMiddleware: validates X-Api-Key header on all /api/v1 routes - Add BasicAuthMiddleware: registered for future M2M use - Use timingSafeEqual for all credential comparisons (timing attack prevention) - Regenerate session ID on login (session fixation prevention) - Validate redirect target after login (open redirect prevention) - Require WEBUI_USERNAME, WEBUI_PASSWORD, API_KEY as mandatory env vars - Share auth.username/authenticated via Inertia shared props - Add user dropdown in navbar (avatar icon + username + logout) - Add login i18n keys in fr.json and en.json - Remove orphan SQL migrations (users, auth_access_tokens) and @adonisjs/lucid
263 lines
9.3 KiB
JSON
263 lines
9.3 KiB
JSON
{
|
|
"header": {
|
|
"title": "ADAM ACS",
|
|
"devices": "Équipements",
|
|
"configurations": "Configurations",
|
|
"firmware": "Firmware",
|
|
"commands": "Commandes",
|
|
"tr069Trace": "Trace TR-069"
|
|
},
|
|
"titles": {
|
|
"devices": "Équipements",
|
|
"device": "Équipement",
|
|
"deviceDetail": "Détail de l'équipement",
|
|
"configurations": "Configurations",
|
|
"commands": "Commandes",
|
|
"commandsFleet": "Commandes flotte",
|
|
"discoveryCreate": "Créer une configuration de découverte",
|
|
"provisioningCreate": "Créer une configuration de provisionnement",
|
|
"firmware": "Catalogue Firmware",
|
|
"trace": "Trace TR-069"
|
|
},
|
|
"labels": {
|
|
"manufacturer": "Fabricant",
|
|
"productClass": "Classe produit",
|
|
"serialNumber": "Numéro de série",
|
|
"externalIP": "IP externe",
|
|
"softwareVersion": "Version logicielle",
|
|
"identifier": "Identifiant",
|
|
"creationDate": "Date de création",
|
|
"createdAt": "Créé le",
|
|
"lastSeen": "Dernière connexion",
|
|
"status": "Statut",
|
|
"action": "Action",
|
|
"mode": "Mode",
|
|
"priority": "Priorité",
|
|
"parameters": "Paramètres",
|
|
"properties": "Propriétés",
|
|
"name": "Nom",
|
|
"value": "Valeur",
|
|
"type": "Type",
|
|
"discovery": "Découverte",
|
|
"provisioning": "Provisionnement",
|
|
"deviceIdentifier": "Identifiant équipement",
|
|
"version": "Version",
|
|
"policy": "Politique",
|
|
"enabled": "Activé",
|
|
"disabled": "Désactivé",
|
|
"tags": "Tags",
|
|
"updatedAt": "Modifié",
|
|
"search": "Rechercher",
|
|
"general": "Général",
|
|
"matchingCriteria": "Critères de correspondance",
|
|
"inventoryPaths": "Chemins d'inventaire",
|
|
"desiredParameters": "Paramètres souhaités",
|
|
"newConfiguration": "Nouvelle configuration",
|
|
"results": "résultat(s)",
|
|
"loading": "Chargement…",
|
|
"noResults": "Aucune configuration trouvée.",
|
|
"parameterName": "Nom du paramètre",
|
|
"once": "Une fois",
|
|
"maintain": "Maintenir",
|
|
"firmwareEntries": "Entrées firmware",
|
|
"migrationRoutes": "Parcours de migration",
|
|
"firmwareDetails": "Détails du firmware",
|
|
"noFirmwareEntries": "Aucune entrée firmware trouvée.",
|
|
"noMigrationRoutes": "Aucun parcours de migration défini.",
|
|
"newFirmwareEntry": "Nouvelle entrée",
|
|
"editFirmwareEntry": "Modifier l'entrée",
|
|
"addRoute": "Ajouter un parcours",
|
|
"fileSize": "Taille du fichier (octets)",
|
|
"checksumType": "Type de checksum",
|
|
"firmwareUrl": "URL du firmware",
|
|
"checksum": "Checksum",
|
|
"filterByProductClass": "Filtrer par classe produit…",
|
|
"saveChanges": "Enregistrer",
|
|
"hardwareVersion": "Version matérielle",
|
|
"devices": "Équipements"
|
|
},
|
|
"button": {
|
|
"refresh": "Rafraîchir",
|
|
"getModel": "Récupérer le modèle",
|
|
"delete": "Supprimer",
|
|
"edit": "Éditer",
|
|
"create": "Créer",
|
|
"send": "Envoyer",
|
|
"cancel": "Annuler",
|
|
"confirm": "Confirmer",
|
|
"fleetManagement": "Gestion de flotte ({count})",
|
|
"addModelPath": "Ajouter un chemin",
|
|
"addParameter": "Ajouter un paramètre",
|
|
"previous": "Précédent",
|
|
"next": "Suivant"
|
|
},
|
|
"checkbox": {
|
|
"selectAll": "Tout sélectionner",
|
|
"selectRow": "Sélectionner la ligne {index}"
|
|
},
|
|
"placeholder": {
|
|
"search": "Rechercher...",
|
|
"modelPath": "Ex: InternetGatewayDevice.DeviceInfo."
|
|
},
|
|
"options": {
|
|
"NI": "Non-immédiat (NI)",
|
|
"I": "Immédiat (I)"
|
|
},
|
|
"modal": {
|
|
"confirmDelete": "Confirmer la suppression",
|
|
"confirmDeleteMessage": "Êtes-vous sûr de vouloir supprimer cet élément ?",
|
|
"getModel": "Récupérer le modèle"
|
|
},
|
|
"footer": {
|
|
"legal": "Mentions légales",
|
|
"privacy": "Politique de confidentialité"
|
|
},
|
|
"language": {
|
|
"fr": "Français",
|
|
"en": "English"
|
|
},
|
|
"criteriaEditor": {
|
|
"deviceId": "Identifiant équipement",
|
|
"standardParams": "Paramètres standards",
|
|
"customCriteria": "Conditions personnalisées",
|
|
"customCriteriaHelp": "Correspond aux équipements dont les valeurs de paramètres connus sont égales aux valeurs attendues",
|
|
"addCondition": "+ Ajouter une condition",
|
|
"noConditions": "Aucune condition — correspond à tous les équipements passant les critères d'identifiant ci-dessus.",
|
|
"paramCriteriaWarning": "Si un paramètre n'est pas encore connu sur l'équipement, cette configuration ne correspondra pas. Une configuration de priorité inférieure sans cette condition doit s'exécuter en premier pour découvrir le paramètre via son inventaire. Évitez d'utiliser le même chemin dans les critères et les paramètres souhaités — cela risque un blocage.",
|
|
"knownValue": "valeur connue",
|
|
"knownValues": "valeurs connues",
|
|
"fields": {
|
|
"manufacturer": {
|
|
"label": "Fabricant",
|
|
"placeholder": "ex. Sagemcom ou Sagemcom*",
|
|
"help": "Correspondance exacte ou motif glob (* ?)"
|
|
},
|
|
"oui": {
|
|
"label": "OUI",
|
|
"placeholder": "ex. 00E0FC ou 00*",
|
|
"help": "Identifiant Unique Organisationnel"
|
|
},
|
|
"productClass": {
|
|
"label": "Classe produit",
|
|
"placeholder": "ex. BM632w ou BM*",
|
|
"help": "Supporte les motifs glob"
|
|
},
|
|
"serialNumber": {
|
|
"label": "Numéro de série",
|
|
"placeholder": "ex. ABC12345 ou ABC*",
|
|
"help": "Supporte les motifs glob"
|
|
}
|
|
},
|
|
"presets": {
|
|
"modelName": "Nom du modèle",
|
|
"hardwareVersion": "Version matérielle",
|
|
"softwareVersion": "Version logicielle",
|
|
"modelNamePlaceholder": "ex. BM632w",
|
|
"hardwareVersionPlaceholder": "ex. V3R1",
|
|
"softwareVersionPlaceholder": "ex. 1.2.3"
|
|
}
|
|
},
|
|
"configDetail": {
|
|
"tabGeneral": "Général",
|
|
"tabCriteria": "Critères",
|
|
"tabInventory": "Inventaire",
|
|
"tabParameters": "Paramètres",
|
|
"tabCompliance": "Conformité",
|
|
"tabHistory": "Historique",
|
|
"totalDevices": "Équipements correspondants",
|
|
"compliant": "Conforme",
|
|
"nonCompliant": "Non conforme",
|
|
"noMatchingDevices": "Aucun équipement ne correspond aux critères.",
|
|
"loadCompliance": "Charger le rapport de conformité",
|
|
"complianceError": "Erreur lors du chargement de la conformité.",
|
|
"dryRunError": "Erreur lors du dry run.",
|
|
"firmwareSkipped": "firmware hors plage horaire",
|
|
"paramDiffs": "Différences de paramètres",
|
|
"currentValue": "Valeur actuelle",
|
|
"targetValue": "Valeur cible",
|
|
"notSet": "(non défini)",
|
|
"noParamDiffs": "Aucune différence de paramètres.",
|
|
"firmwarePath": "Chemin de migration firmware",
|
|
"parameter": "Paramètre",
|
|
"expectedValue": "Valeur attendue",
|
|
"noCriteria": "Aucun critère défini.",
|
|
"parameterConditions": "Conditions sur les paramètres",
|
|
"noInventoryPaths": "Aucun chemin d'inventaire défini.",
|
|
"noParameters": "Aucun paramètre défini.",
|
|
"noHistory": "Aucun historique disponible.",
|
|
"date": "Date",
|
|
"close": "Fermer"
|
|
},
|
|
"device": {
|
|
"identity": "Identité",
|
|
"identifier": "Identifiant",
|
|
"versions": "Versions",
|
|
"system": "Système",
|
|
"nextConnection": "Prochaine connexion",
|
|
"clientReferences": "Références client",
|
|
"deleteDevice": "Supprimer l'équipement",
|
|
"confirmDeleteMessage": "Confirmer la suppression de",
|
|
"exchanges": "Échanges TR-069",
|
|
"enableTracing": "Activer le tracing",
|
|
"tracingActive": "Tracing actif"
|
|
},
|
|
"trace": {
|
|
"tracedDevices": "Équipements tracés",
|
|
"description": "Activez le tracing sur un équipement puis cliquez sur « Voir » pour visualiser les échanges en direct.",
|
|
"deviceId": "Device ID",
|
|
"started": "Démarré",
|
|
"remove": "Supprimer",
|
|
"enableTracing": "Activer le tracing",
|
|
"editJson": "Éditer JSON",
|
|
"editConfig": "Configuration du tracing",
|
|
"formatJson": "Formater",
|
|
"saveApply": "Sauvegarder",
|
|
"expectedFormat": "Format attendu :",
|
|
"notTraced": "L'équipement n'est pas encore tracé.",
|
|
"noTracedDevices": "Aucun équipement tracé."
|
|
},
|
|
"sequence": {
|
|
"cpe": "CPE",
|
|
"acs": "ACS",
|
|
"emptyPost": "POST vide",
|
|
"session": "Session",
|
|
"goTo": "Aller à…",
|
|
"clear": "Effacer",
|
|
"clearExchanges": "Effacer les échanges",
|
|
"connected": "Connecté",
|
|
"paused": "Pause",
|
|
"disconnected": "Déconnecté",
|
|
"resumeScroll": "Reprendre le défilement automatique",
|
|
"allLoaded": "Tous les messages sont chargés",
|
|
"loading": "Chargement…",
|
|
"noExchanges": "Aucun échange enregistré. Les messages SOAP apparaîtront ici lors de la prochaine connexion du CPE.",
|
|
"confirmClear": "Êtes-vous sûr de vouloir supprimer tous les échanges enregistrés pour cet équipement ? Cette action est irréversible.",
|
|
"confirmClearTitle": "Effacer les échanges"
|
|
},
|
|
"inspector": {
|
|
"title": "Inspecteur",
|
|
"selectMessage": "Sélectionnez un message pour voir son contenu.",
|
|
"direction": "Direction",
|
|
"method": "Méthode",
|
|
"session": "Session",
|
|
"timestamp": "Horodatage",
|
|
"rawXml": "XML brut"
|
|
},
|
|
"common": {
|
|
"confirm": "Confirmer",
|
|
"cancel": "Annuler",
|
|
"close": "Fermer",
|
|
"actions": "Actions",
|
|
"selected": "sélectionné(s)"
|
|
},
|
|
"login": {
|
|
"subtitle": "Auto-Configuration Server",
|
|
"username": "Identifiant",
|
|
"password": "Mot de passe",
|
|
"signIn": "Se connecter",
|
|
"signingIn": "Connexion…",
|
|
"invalidCredentials": "Identifiant ou mot de passe incorrect.",
|
|
"logout": "Se déconnecter"
|
|
}
|
|
}
|