Téléverser les fichiers vers "workstation-setup/src"

This commit is contained in:
2026-08-19 17:01:20 +02:00
parent 0f76709f6c
commit 68c69c7713
3 changed files with 92 additions and 61 deletions
+55 -28
View File
@@ -17,9 +17,9 @@ Kirigami.ApplicationWindow {
property var steps: [ property var steps: [
{ "title": "Bienvenue", "subtitle": "Première connexion" }, { "title": "Bienvenue", "subtitle": "Première connexion" },
{ "title": "Mot de passe", "subtitle": "Protection LUKS2" }, { "title": "Mot de passe", "subtitle": "Protection des données" },
{ "title": "YubiKey", "subtitle": "Création du PIN" }, { "title": "YubiKey", "subtitle": "Création du code PIN" },
{ "title": "Association", "subtitle": "Déverrouillage FIDO2" }, { "title": "Association", "subtitle": "Association de la clé" },
{ "title": "Terminé", "subtitle": "Poste prêt" } { "title": "Terminé", "subtitle": "Poste prêt" }
] ]
@@ -126,18 +126,20 @@ Kirigami.ApplicationWindow {
component PrimaryButton: Controls.Button { component PrimaryButton: Controls.Button {
id: control id: control
implicitHeight: 48 implicitHeight: 52
implicitWidth: 180 leftPadding: 26
leftPadding: 24 rightPadding: 26
rightPadding: 24 implicitWidth: Math.max(210, buttonLabel.implicitWidth + leftPadding + rightPadding)
contentItem: Controls.Label { contentItem: Controls.Label {
id: buttonLabel
text: control.text text: control.text
color: "white" color: "white"
font.pixelSize: 15 font.pixelSize: 15
font.weight: Font.DemiBold font.weight: Font.DemiBold
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
wrapMode: Text.NoWrap
} }
background: Rectangle { background: Rectangle {
@@ -291,7 +293,7 @@ Kirigami.ApplicationWindow {
font.weight: Font.Bold font.weight: Font.Bold
} }
Controls.Label { Controls.Label {
text: "Provisioning sécurisé" text: "Configuration sécurisée"
color: "#b9cee5" color: "#b9cee5"
font.pixelSize: 12 font.pixelSize: 12
} }
@@ -410,13 +412,29 @@ Kirigami.ApplicationWindow {
} }
} }
StackLayout { Item {
id: pageViewport
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
currentIndex: root.currentStep clip: true
Row {
id: pageStrip
height: parent.height
spacing: 0
x: -root.currentStep * pageViewport.width
Behavior on x {
NumberAnimation {
duration: 330
easing.type: Easing.OutCubic
}
}
// 0 - Bienvenue // 0 - Bienvenue
Item { Item {
width: pageViewport.width
height: pageViewport.height
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
spacing: 20 spacing: 20
@@ -432,7 +450,7 @@ Kirigami.ApplicationWindow {
Controls.Label { Controls.Label {
Layout.maximumWidth: 720 Layout.maximumWidth: 720
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
text: "Votre espace personnel est déjà protégé par un volume LUKS2. Il reste à remplacer le mot de passe temporaire et à préparer votre YubiKey." text: "Votre espace personnel est déjà chiffré. Il reste à remplacer le mot de passe temporaire et à préparer votre YubiKey."
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
color: "#64748b" color: "#64748b"
@@ -443,7 +461,7 @@ Kirigami.ApplicationWindow {
Layout.maximumWidth: 720 Layout.maximumWidth: 720
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
iconText: "🔐" iconText: "🔐"
text: "À la fin, votre home pourra être déverrouillé soit avec votre mot de passe personnel, soit avec votre YubiKey et son PIN." text: "À la fin, vous pourrez ouvrir votre espace personnel soit avec votre mot de passe, soit avec votre YubiKey et son code PIN."
} }
Item { Layout.fillHeight: true } Item { Layout.fillHeight: true }
PrimaryButton { PrimaryButton {
@@ -459,6 +477,8 @@ Kirigami.ApplicationWindow {
// 1 - Mot de passe // 1 - Mot de passe
Item { Item {
width: pageViewport.width
height: pageViewport.height
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
spacing: 16 spacing: 16
@@ -471,7 +491,7 @@ Kirigami.ApplicationWindow {
} }
Controls.Label { Controls.Label {
Layout.fillWidth: true Layout.fillWidth: true
text: "Ce mot de passe reste votre solution de secours si la YubiKey est oubliée ou indisponible. Le changement est appliqué directement à systemd-homed et au chiffrement LUKS2." text: "Ce mot de passe reste votre solution de secours si la YubiKey est oubliée ou indisponible."
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
color: "#64748b" color: "#64748b"
font.pixelSize: 14 font.pixelSize: 14
@@ -523,7 +543,7 @@ Kirigami.ApplicationWindow {
PrimaryButton { PrimaryButton {
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight
text: provisioning.busy ? "Modification…" : "Modifier le mot de passe" text: provisioning.busy ? "Modification…" : "Valider le mot de passe"
enabled: root.passwordStepValid && !provisioning.busy enabled: root.passwordStepValid && !provisioning.busy
onClicked: { onClicked: {
root.operationError = "" root.operationError = ""
@@ -541,6 +561,8 @@ Kirigami.ApplicationWindow {
// 2 - PIN YubiKey // 2 - PIN YubiKey
Item { Item {
width: pageViewport.width
height: pageViewport.height
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
spacing: 16 spacing: 16
@@ -553,7 +575,7 @@ Kirigami.ApplicationWindow {
} }
Controls.Label { Controls.Label {
Layout.fillWidth: true Layout.fillWidth: true
text: "Branchez une seule YubiKey vierge puis choisissez son premier PIN FIDO2. Aucun PIN temporaire n'est utilisé." text: "Branchez une seule YubiKey vierge puis choisissez son code PIN. Aucun code PIN temporaire n'est utilisé."
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
color: "#64748b" color: "#64748b"
font.pixelSize: 14 font.pixelSize: 14
@@ -561,13 +583,13 @@ Kirigami.ApplicationWindow {
InfoBox { InfoBox {
iconText: "☝" iconText: "☝"
text: "La clé doit sortir d'un reset FIDO2 et ne posséder aucun PIN. Cette étape ne crée aucun fichier u2f-mappings." text: "La YubiKey doit être vierge ou avoir été réinitialisée. Elle ne doit pas déjà posséder de code PIN."
} }
Item { Layout.preferredHeight: 8 } Item { Layout.preferredHeight: 8 }
FieldLabel { text: "Nouveau PIN FIDO2" } FieldLabel { text: "Nouveau code PIN" }
SecretField { id: newPin } SecretField { id: newPin }
FieldLabel { text: "Confirmation du PIN" } FieldLabel { text: "Confirmation du code PIN" }
SecretField { id: confirmPin } SecretField { id: confirmPin }
ErrorBox { } ErrorBox { }
@@ -575,7 +597,7 @@ Kirigami.ApplicationWindow {
PrimaryButton { PrimaryButton {
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight
text: provisioning.busy ? "Initialisation…" : "Créer le PIN" text: provisioning.busy ? "Initialisation…" : "Créer le code PIN"
enabled: root.pinStepValid && !provisioning.busy enabled: root.pinStepValid && !provisioning.busy
onClicked: { onClicked: {
root.operationError = "" root.operationError = ""
@@ -591,19 +613,21 @@ Kirigami.ApplicationWindow {
// 3 - Association FIDO2 au home // 3 - Association FIDO2 au home
Item { Item {
width: pageViewport.width
height: pageViewport.height
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
spacing: 16 spacing: 16
Controls.Label { Controls.Label {
text: "Associez la YubiKey à votre home chiffré" text: "Associez la YubiKey à votre espace personnel"
color: "#0f172a" color: "#0f172a"
font.pixelSize: 28 font.pixelSize: 28
font.weight: Font.Bold font.weight: Font.Bold
} }
Controls.Label { Controls.Label {
Layout.fillWidth: true Layout.fillWidth: true
text: "systemd-homed va ajouter la YubiKey comme second moyen de déverrouillage du volume LUKS2. Votre mot de passe personnel reste valide en secours." text: "La YubiKey sera ajoutée comme second moyen d'ouvrir votre espace personnel chiffré. Votre mot de passe reste utilisable en secours."
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
color: "#64748b" color: "#64748b"
font.pixelSize: 14 font.pixelSize: 14
@@ -611,13 +635,13 @@ Kirigami.ApplicationWindow {
InfoBox { InfoBox {
iconText: "🔐" iconText: "🔐"
text: "Saisissez le mot de passe que vous venez de choisir et le PIN de la YubiKey. Aucune recovery key n'est demandée dans ce workflow." text: "Saisissez le mot de passe que vous venez de choisir et le code PIN de la YubiKey."
} }
InfoBox { InfoBox {
visible: !provisioning.busy visible: !provisioning.busy
iconText: "☝" iconText: "☝"
text: "Après avoir lancé l'association, l'assistant vous indiquera précisément quand toucher la YubiKey. Plusieurs touchers peuvent être nécessaires." text: "Après avoir lancé l'association, suivez les indications affichées à l'écran. La YubiKey peut demander plusieurs touchers."
} }
Rectangle { Rectangle {
@@ -665,7 +689,7 @@ Kirigami.ApplicationWindow {
Layout.fillWidth: true Layout.fillWidth: true
text: provisioning.fidoTouchRequired text: provisioning.fidoTouchRequired
? "TOUCHEZ LA YUBIKEY MAINTENANT" ? "TOUCHEZ LA YUBIKEY MAINTENANT"
: "Association FIDO2 en cours" : "Association de la YubiKey en cours"
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
color: provisioning.fidoTouchRequired ? "#9a3412" : "#1d4ed8" color: provisioning.fidoTouchRequired ? "#9a3412" : "#1d4ed8"
font.pixelSize: provisioning.fidoTouchRequired ? 18 : 15 font.pixelSize: provisioning.fidoTouchRequired ? 18 : 15
@@ -687,7 +711,7 @@ Kirigami.ApplicationWindow {
Item { Layout.preferredHeight: 8 } Item { Layout.preferredHeight: 8 }
FieldLabel { text: "Votre mot de passe personnel actuel" } FieldLabel { text: "Votre mot de passe personnel actuel" }
SecretField { id: fidoPassword } SecretField { id: fidoPassword }
FieldLabel { text: "PIN de la YubiKey" } FieldLabel { text: "Code PIN de la YubiKey" }
SecretField { id: fidoPin } SecretField { id: fidoPin }
ErrorBox { } ErrorBox { }
@@ -711,6 +735,8 @@ Kirigami.ApplicationWindow {
// 4 - Terminé // 4 - Terminé
Item { Item {
width: pageViewport.width
height: pageViewport.height
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
spacing: 18 spacing: 18
@@ -745,7 +771,7 @@ Kirigami.ApplicationWindow {
Controls.Label { Controls.Label {
Layout.maximumWidth: 720 Layout.maximumWidth: 720
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
text: "Votre mot de passe personnel protège le home LUKS2 et votre YubiKey est désormais enrôlée dans systemd-homed. Vous pourrez ouvrir votre session avec le mot de passe ou avec la YubiKey + PIN." text: "Votre espace personnel est chiffré et votre YubiKey est prête. Vous pourrez ouvrir votre session avec votre mot de passe ou avec votre YubiKey et son code PIN."
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
color: "#64748b" color: "#64748b"
@@ -757,7 +783,7 @@ Kirigami.ApplicationWindow {
Layout.maximumWidth: 720 Layout.maximumWidth: 720
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
iconText: "✓" iconText: "✓"
text: "Aucun u2f-mappings n'est utilisé. Les données FIDO2 nécessaires au déverrouillage sont gérées par systemd-homed." text: "Votre configuration sécurisée est terminée. Conservez votre YubiKey avec vous et mémorisez son code PIN."
} }
Item { Layout.fillHeight: true } Item { Layout.fillHeight: true }
@@ -770,7 +796,8 @@ Kirigami.ApplicationWindow {
} }
} }
} }
} } // Row pageStrip
} // pageViewport
} }
} }
} }
+36 -32
View File
@@ -248,25 +248,29 @@ void ProvisioningBackend::handleHelperStdout(Operation operation, const QByteArr
bool changed = false; bool changed = false;
if (line == QByteArrayLiteral("EVENT_FIDO_INITIALIZING")) { if (line == QByteArrayLiteral("EVENT_FIDO_INITIALIZING")) {
m_fidoTouchRequired = false; m_fidoTouchRequired = true;
m_fidoStatus = QStringLiteral("Initialisation de l'association FIDO2…"); ++m_fidoTouchRequestCount;
m_fidoStatus = QStringLiteral("Touchez la YubiKey dès quelle clignote. Plusieurs touchers peuvent être demandés pendant cette étape. (%1)")
.arg(m_fidoTouchRequestCount);
changed = true; changed = true;
} else if (line == QByteArrayLiteral("EVENT_FIDO_GENERATING")) { } else if (line == QByteArrayLiteral("EVENT_FIDO_GENERATING")) {
m_fidoTouchRequired = false; m_fidoTouchRequired = true;
m_fidoStatus = QStringLiteral("Génération du secret FIDO2…"); ++m_fidoTouchRequestCount;
m_fidoStatus = QStringLiteral("Touchez de nouveau la YubiKey dès quelle clignote. (%1)")
.arg(m_fidoTouchRequestCount);
changed = true; changed = true;
} else if (line == QByteArrayLiteral("EVENT_FIDO_UPDATING_HOME")) { } else if (line == QByteArrayLiteral("EVENT_FIDO_UPDATING_HOME")) {
m_fidoTouchRequired = false; m_fidoTouchRequired = false;
m_fidoStatus = QStringLiteral("Mise à jour du home chiffré"); m_fidoStatus = QStringLiteral("Mise à jour de votre espace personnel");
changed = true; changed = true;
} else if (line == QByteArrayLiteral("EVENT_FIDO_SYNCHRONIZING")) { } else if (line == QByteArrayLiteral("EVENT_FIDO_SYNCHRONIZING")) {
m_fidoTouchRequired = false; m_fidoTouchRequired = false;
m_fidoStatus = QStringLiteral("Synchronisation des clés de chiffrement"); m_fidoStatus = QStringLiteral("Finalisation de la protection");
changed = true; changed = true;
} else if (line == QByteArrayLiteral("EVENT_FIDO_TOUCH_REQUIRED")) { } else if (line == QByteArrayLiteral("EVENT_FIDO_TOUCH_REQUIRED")) {
m_fidoTouchRequired = true; m_fidoTouchRequired = true;
++m_fidoTouchRequestCount; ++m_fidoTouchRequestCount;
m_fidoStatus = QStringLiteral("Touchez la YubiKey maintenant — demande %1. Il peut y avoir plusieurs touchers pendant cette étape.") m_fidoStatus = QStringLiteral("Touchez la YubiKey maintenant. Plusieurs touchers peuvent être demandés pendant cette étape. (%1)")
.arg(m_fidoTouchRequestCount); .arg(m_fidoTouchRequestCount);
changed = true; changed = true;
} }
@@ -373,7 +377,7 @@ void ProvisioningBackend::initializePin(const QString &newPin,
return; return;
} }
if (m_pinDone) { if (m_pinDone) {
emit pinChangeFinished(true, QStringLiteral("Le PIN FIDO2 a déjà été initialisé.")); emit pinChangeFinished(true, QStringLiteral("Le code PIN de la YubiKey a déjà été initialisé."));
return; return;
} }
if (newPin.size() < 4 || confirmation.size() < 4) { if (newPin.size() < 4 || confirmation.size() < 4) {
@@ -407,15 +411,15 @@ void ProvisioningBackend::enrollFido(const QString &currentPassword,
return; return;
} }
if (!m_passwordDone || !m_pinDone) { if (!m_passwordDone || !m_pinDone) {
emit fidoEnrollmentFinished(false, QStringLiteral("Le mot de passe et le PIN doivent être configurés avant l'association FIDO2.")); emit fidoEnrollmentFinished(false, QStringLiteral("Le mot de passe et le code PIN doivent être configurés avant d'associer la YubiKey."));
return; return;
} }
if (m_fidoDone) { if (m_fidoDone) {
emit fidoEnrollmentFinished(true, QStringLiteral("La YubiKey est déjà associée au home chiffré.")); emit fidoEnrollmentFinished(true, QStringLiteral("La YubiKey est déjà associée à votre espace personnel."));
return; return;
} }
if (currentPassword.isEmpty() || pin.size() < 4) { if (currentPassword.isEmpty() || pin.size() < 4) {
emit fidoEnrollmentFinished(false, QStringLiteral("Saisissez votre mot de passe actuel et le PIN de la YubiKey.")); emit fidoEnrollmentFinished(false, QStringLiteral("Saisissez votre mot de passe actuel et le code PIN de la YubiKey."));
return; return;
} }
if (containsLineBreak(currentPassword) || containsLineBreak(pin)) { if (containsLineBreak(currentPassword) || containsLineBreak(pin)) {
@@ -424,7 +428,7 @@ void ProvisioningBackend::enrollFido(const QString &currentPassword,
} }
resetFidoInteraction(); resetFidoInteraction();
m_fidoStatus = QStringLiteral("Préparation de l'association FIDO2"); m_fidoStatus = QStringLiteral("Préparation de l'association de la YubiKey");
emit fidoInteractionChanged(); emit fidoInteractionChanged();
startHelper(Operation::Fido, startHelper(Operation::Fido,
@@ -558,20 +562,20 @@ void ProvisioningBackend::startHelper(Operation operation,
case Operation::Password: case Operation::Password:
markerCreated = createMarker(passwordMarker()); markerCreated = createMarker(passwordMarker());
message = markerCreated message = markerCreated
? QStringLiteral("Votre nouveau mot de passe protège maintenant votre home chiffré.") ? QStringLiteral("Votre nouveau mot de passe protège maintenant votre espace personnel.")
: QStringLiteral("Le mot de passe a été modifié mais l'état local n'a pas pu être enregistré."); : QStringLiteral("Le mot de passe a été modifié mais l'état local n'a pas pu être enregistré.");
break; break;
case Operation::Pin: case Operation::Pin:
markerCreated = createMarker(pinMarker()); markerCreated = createMarker(pinMarker());
message = markerCreated message = markerCreated
? QStringLiteral("Le PIN FIDO2 de votre YubiKey est maintenant initialisé.") ? QStringLiteral("Le code PIN de votre YubiKey est maintenant initialisé.")
: QStringLiteral("Le PIN a été créé mais l'état local n'a pas pu être enregistré."); : QStringLiteral("Le PIN a été créé mais l'état local n'a pas pu être enregistré.");
break; break;
case Operation::Fido: case Operation::Fido:
markerCreated = createMarker(fidoMarker()); markerCreated = createMarker(fidoMarker());
message = markerCreated message = markerCreated
? QStringLiteral("Votre YubiKey peut maintenant déverrouiller votre home chiffré.") ? QStringLiteral("Votre YubiKey peut maintenant ouvrir votre espace personnel chiffré.")
: QStringLiteral("La YubiKey a été enrôlée mais l'état local n'a pas pu être enregistré."); : QStringLiteral("La YubiKey a été associée mais l'état local n'a pas pu être enregistré.");
break; break;
} }
} else { } else {
@@ -602,8 +606,8 @@ void ProvisioningBackend::startHelper(Operation operation,
if (operation == Operation::Fido) { if (operation == Operation::Fido) {
m_fidoTouchRequired = false; m_fidoTouchRequired = false;
m_fidoStatus = helperSucceeded && markerCreated m_fidoStatus = helperSucceeded && markerCreated
? QStringLiteral("Association FIDO2 terminée.") ? QStringLiteral("Association de la YubiKey terminée.")
: QStringLiteral("Association FIDO2 interrompue."); : QStringLiteral("Association de la YubiKey interrompue.");
emit fidoInteractionChanged(); emit fidoInteractionChanged();
} }
@@ -622,7 +626,7 @@ QString ProvisioningBackend::safeMessageForFailure(Operation operation,
if (timedOut || exitCode == 124 || output.contains(QStringLiteral("timeout"))) { if (timedOut || exitCode == 124 || output.contains(QStringLiteral("timeout"))) {
if (operation == Operation::Fido) { if (operation == Operation::Fido) {
return QStringLiteral("L'association FIDO2 a expiré. Laissez la YubiKey branchée et touchez-la lorsqu'elle clignote."); return QStringLiteral("L'association de la YubiKey a expiré. Laissez-la branchée et recommencez l'opération.");
} }
return QStringLiteral("L'opération a expiré avant de pouvoir être terminée."); return QStringLiteral("L'opération a expiré avant de pouvoir être terminée.");
} }
@@ -634,45 +638,45 @@ QString ProvisioningBackend::safeMessageForFailure(Operation operation,
if (output.contains(QStringLiteral("new_rejected"))) { if (output.contains(QStringLiteral("new_rejected"))) {
return QStringLiteral("Le nouveau mot de passe a été refusé par la politique de sécurité."); return QStringLiteral("Le nouveau mot de passe a été refusé par la politique de sécurité.");
} }
return QStringLiteral("Le mot de passe n'a pas pu être modifié par systemd-homed."); return QStringLiteral("Le mot de passe n'a pas pu être modifié.");
} }
if (operation == Operation::Pin) { if (operation == Operation::Pin) {
if (output.contains(QStringLiteral("pin_already_configured"))) { if (output.contains(QStringLiteral("pin_already_configured"))) {
return QStringLiteral("Cette YubiKey possède déjà un PIN FIDO2. Utilisez une YubiKey vierge ou réinitialisée."); return QStringLiteral("Cette YubiKey possède déjà un code PIN. Utilisez une YubiKey vierge ou réinitialisée.");
} }
if (output.contains(QStringLiteral("pin_auth_blocked"))) { if (output.contains(QStringLiteral("pin_auth_blocked"))) {
return QStringLiteral("Les opérations PIN sont temporairement bloquées. Débranchez puis rebranchez la YubiKey."); return QStringLiteral("Les opérations PIN sont temporairement bloquées. Débranchez puis rebranchez la YubiKey.");
} }
if (output.contains(QStringLiteral("pin_blocked"))) { if (output.contains(QStringLiteral("pin_blocked"))) {
return QStringLiteral("Le PIN FIDO2 est bloqué. La YubiKey doit être réinitialisée avant provisioning."); return QStringLiteral("Le code PIN est bloqué. La YubiKey doit être réinitialisée avant de recommencer.");
} }
if (output.contains(QStringLiteral("multiple_yubikey"))) { if (output.contains(QStringLiteral("multiple_yubikey"))) {
return QStringLiteral("Plusieurs clés FIDO2 sont détectées. Ne laissez branchée que la YubiKey d'Alice."); return QStringLiteral("Plusieurs clés de sécurité sont détectées. Ne laissez branchée que votre YubiKey.");
} }
if (output.contains(QStringLiteral("no_yubikey"))) { if (output.contains(QStringLiteral("no_yubikey"))) {
return QStringLiteral("Aucune YubiKey FIDO2 compatible n'a été détectée."); return QStringLiteral("Aucune YubiKey compatible n'a été détectée.");
} }
if (output.contains(QStringLiteral("pin_policy"))) { if (output.contains(QStringLiteral("pin_policy"))) {
return QStringLiteral("Le PIN choisi ne respecte pas la politique FIDO2 de la YubiKey."); return QStringLiteral("Le code PIN choisi n'est pas accepté par la YubiKey.");
} }
return QStringLiteral("Le PIN FIDO2 n'a pas pu être initialisé."); return QStringLiteral("Le code PIN de la YubiKey n'a pas pu être initialisé.");
} }
if (output.contains(QStringLiteral("fido_bad_password"))) { if (output.contains(QStringLiteral("fido_bad_password"))) {
return QStringLiteral("Le mot de passe personnel fourni est incorrect ou insuffisant pour mettre à jour le home."); return QStringLiteral("Le mot de passe fourni est incorrect.");
} }
if (output.contains(QStringLiteral("fido_bad_pin"))) { if (output.contains(QStringLiteral("fido_bad_pin"))) {
return QStringLiteral("Le PIN de la YubiKey est incorrect. Ne réessayez pas plusieurs fois : vérifiez le PIN avant une nouvelle tentative."); return QStringLiteral("Le code PIN de la YubiKey est incorrect. Vérifiez-le avant une nouvelle tentative.");
} }
if (output.contains(QStringLiteral("multiple_yubikey"))) { if (output.contains(QStringLiteral("multiple_yubikey"))) {
return QStringLiteral("Plusieurs clés FIDO2 sont détectées. Ne laissez branchée que la YubiKey d'Alice."); return QStringLiteral("Plusieurs clés de sécurité sont détectées. Ne laissez branchée que votre YubiKey.");
} }
if (output.contains(QStringLiteral("no_yubikey"))) { if (output.contains(QStringLiteral("no_yubikey"))) {
return QStringLiteral("Aucune YubiKey FIDO2 compatible n'a été détectée."); return QStringLiteral("Aucune YubiKey compatible n'a été détectée.");
} }
if (output.contains(QStringLiteral("fido_enroll_failed"))) { if (output.contains(QStringLiteral("fido_enroll_failed"))) {
return QStringLiteral("La YubiKey n'a pas pu être associée au home. Vérifiez le mot de passe, le PIN et touchez la clé lorsqu'elle clignote."); return QStringLiteral("La YubiKey n'a pas pu être associée à votre espace personnel. Vérifiez le mot de passe et le code PIN.");
} }
return QStringLiteral("L'association FIDO2 au home chiffré a échoué."); return QStringLiteral("L'association de la YubiKey à votre espace personnel a échoué.");
} }
+1 -1
View File
@@ -41,7 +41,7 @@ int main(int argc, char *argv[])
QGuiApplication::setOrganizationName(QStringLiteral("Raspot")); QGuiApplication::setOrganizationName(QStringLiteral("Raspot"));
QGuiApplication::setOrganizationDomain(QStringLiteral("raspot.in")); QGuiApplication::setOrganizationDomain(QStringLiteral("raspot.in"));
QGuiApplication::setApplicationName(QStringLiteral("NixOS Workstations Setup")); QGuiApplication::setApplicationName(QStringLiteral("NixOS Workstations Setup"));
QGuiApplication::setApplicationVersion(QStringLiteral("1.8.5")); QGuiApplication::setApplicationVersion(QStringLiteral("1.8.6"));
QGuiApplication::setDesktopFileName(QStringLiteral("org.raspot.nixosworkstations.setup")); QGuiApplication::setDesktopFileName(QStringLiteral("org.raspot.nixosworkstations.setup"));
QCommandLineParser parser; QCommandLineParser parser;