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 /// ouverture qui ne peut pas aboutir, et nomme le telechargement pour ce
/// qu'il est : un remplacement. /// qu'il est : un remplacement.
FVaultUnreadable: Boolean; 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) : // La cle du verrouillage d'ecran est morte (schema retire ou reinitialise) :
// on ouvre la copie de secours, scellee sous le mot de passe. // on ouvre la copie de secours, scellee sous le mot de passe.
FRecover: Boolean; FRecover: Boolean;
@@ -1665,6 +1671,7 @@ begin
FUrl := FIRSTRUN_URL; FUrl := FIRSTRUN_URL;
FToken := FIRSTRUN_TOKEN; FToken := FIRSTRUN_TOKEN;
FPwd := TEST_PWD; FPwd := TEST_PWD;
FPwdShown := FPwd;
// Ce que l'appareil a retenu l'emporte sur les valeurs de premier lancement. // Ce que l'appareil a retenu l'emporte sur les valeurs de premier lancement.
if LoadDeviceSettings(LUrl, LToken) then if LoadDeviceSettings(LUrl, LToken) then
begin begin
@@ -1789,6 +1796,7 @@ begin
FUrl := TNetEncoding.URL.Decode(Param('u')).Trim; FUrl := TNetEncoding.URL.Decode(Param('u')).Trim;
FToken := TNetEncoding.URL.Decode(Param('t')).Trim; FToken := TNetEncoding.URL.Decode(Param('t')).Trim;
FPwd := TNetEncoding.URL.Decode(Param('p')); FPwd := TNetEncoding.URL.Decode(Param('p'));
if FPwd <> FPwdShown then FPwdUserSet := True;
FPin := TNetEncoding.URL.Decode(Param('c')); FPin := TNetEncoding.URL.Decode(Param('c'));
// L'empreinte du mot de passe AUSSI : si une saisie destinee au jeton // 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 // 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. // en boucle, "open vault first" alors que le coffre etait ouvert.
if HasLocalContainer then if HasLocalContainer then
FVaultPwd := LPwd 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 else
begin begin
FSyncPwd := LPwd; FSyncPwd := LPwd;
@@ -2271,6 +2286,7 @@ begin
// fois : PushConfig reposait la valeur de premier lancement au // fois : PushConfig reposait la valeur de premier lancement au
// demarrage, l'ouverture ne la remplacait pas, et DoSync la PREFERE. // demarrage, l'ouverture ne la remplacait pas, et DoSync la PREFERE.
FPwd := LPwd; FPwd := LPwd;
FPwdShown := FPwd;
WebCall(Format('PM.setConfig(%s, %s, %s, false)', WebCall(Format('PM.setConfig(%s, %s, %s, false)',
[JsArg(FUrl), JsArg(FToken), JsArg(FPwd)])); [JsArg(FUrl), JsArg(FToken), JsArg(FPwd)]));
end; end;
@@ -2885,6 +2901,9 @@ begin
procedure procedure
begin begin
FSyncPwd := APwd; // il vient d'ouvrir un conteneur : il est bon 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 try
AdoptVault(LPlain); AdoptVault(LPlain);
except except