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 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-09-18 11:13:24 +01:00
parent 9947ce5718
commit c809f4e4c5
+19
View File
@@ -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