From c809f4e4c5bedc7a86d70f68bf16f97d9f523635 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Fri, 18 Sep 2026 11:13:24 +0100 Subject: [PATCH] fix(apk): le mot de passe de synchro enregistre dans les reglages n'est plus ecrase par celui du cache Co-Authored-By: Claude Opus 5 --- mainApk.pas | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mainApk.pas b/mainApk.pas index 9b242e0..b539d46 100644 --- a/mainApk.pas +++ b/mainApk.pas @@ -141,6 +141,12 @@ type /// ouverture qui ne peut pas aboutir, et nomme le telechargement pour ce /// qu'il est : un remplacement. FVaultUnreadable: Boolean; + // LE MOT DE PASSE DE SYNCHRO TAPE L'EMPORTE SUR CELUI DU CACHE. FPwdShown est + // la derniere valeur que l'app a mise dans le champ ; une valeur differente + // venue de la page est donc un choix de l'utilisateur (FPwdUserSet), que + // l'ouverture du coffre ne doit plus ecraser avec l'ancienne. + FPwdShown: string; + FPwdUserSet: Boolean; // La cle du verrouillage d'ecran est morte (schema retire ou reinitialise) : // on ouvre la copie de secours, scellee sous le mot de passe. FRecover: Boolean; @@ -1665,6 +1671,7 @@ begin FUrl := FIRSTRUN_URL; FToken := FIRSTRUN_TOKEN; FPwd := TEST_PWD; + FPwdShown := FPwd; // Ce que l'appareil a retenu l'emporte sur les valeurs de premier lancement. if LoadDeviceSettings(LUrl, LToken) then begin @@ -1789,6 +1796,7 @@ begin FUrl := TNetEncoding.URL.Decode(Param('u')).Trim; FToken := TNetEncoding.URL.Decode(Param('t')).Trim; FPwd := TNetEncoding.URL.Decode(Param('p')); + if FPwd <> FPwdShown then FPwdUserSet := True; FPin := TNetEncoding.URL.Decode(Param('c')); // L'empreinte du mot de passe AUSSI : si une saisie destinee au jeton // atterrit dans le champ voisin - les deux sont masques - c'est celle-ci @@ -2263,6 +2271,13 @@ begin // en boucle, "open vault first" alors que le coffre etait ouvert. if HasLocalContainer then FVaultPwd := LPwd + else if FPwdUserSet then + begin + // L'utilisateur a enregistre un autre mot de passe de synchro depuis : + // c'est lui qui sert, bon ou mauvais - la synchro le dira. + FSyncPwd := FPwd; + Log(' sync password set in Settings kept over the cached one'); + end else begin FSyncPwd := LPwd; @@ -2271,6 +2286,7 @@ begin // fois : PushConfig reposait la valeur de premier lancement au // demarrage, l'ouverture ne la remplacait pas, et DoSync la PREFERE. FPwd := LPwd; + FPwdShown := FPwd; WebCall(Format('PM.setConfig(%s, %s, %s, false)', [JsArg(FUrl), JsArg(FToken), JsArg(FPwd)])); end; @@ -2885,6 +2901,9 @@ begin procedure begin FSyncPwd := APwd; // il vient d'ouvrir un conteneur : il est bon + // Le cache le porte desormais : il redevient la reference. + FPwdUserSet := False; + FPwdShown := FPwd; try AdoptVault(LPlain); except