feat(android): saisir le secret 2FA des la creation d'une entree
Le formulaire New entry n'avait pas le champ et AddEntry ecrivait
totp_secret = '' en dur : il fallait enregistrer l'entree puis la rouvrir
pour poser un second facteur, alors que l'editeur portait deja le champ.
Meme intitule que l'editeur ("2FA secret"), masque pour une note comme
site et identifiant, et achemine par &o= — t, s, u, p, k, d etaient
pris.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -49,7 +49,7 @@ function NewEmptySnapshot(const AUsername: string): string;
|
||||
///
|
||||
/// Un uuid neuf, et lui seul : pas de tombstone, on ne supprime pas encore.
|
||||
function AddEntry(const APlainJson, ATitle, ASite, AUsername, APassword,
|
||||
AKind, AFolder: string): string;
|
||||
AKind, AFolder, ATotp: string): string;
|
||||
|
||||
/// Retire une entree de l'instantane et laisse une PIERRE TOMBALE a sa place.
|
||||
///
|
||||
@@ -532,7 +532,7 @@ begin
|
||||
end;
|
||||
|
||||
function AddEntry(const APlainJson, ATitle, ASite, AUsername, APassword,
|
||||
AKind, AFolder: string): string;
|
||||
AKind, AFolder, ATotp: string): string;
|
||||
var
|
||||
LRoot, LEntry: TJSONObject;
|
||||
LEntries: TJSONArray;
|
||||
@@ -560,7 +560,7 @@ begin
|
||||
else LEntry.AddPair('folder', 'All');
|
||||
EnsureFolder(LRoot, AFolder);
|
||||
LEntry.AddPair('tags', TJSONArray.Create);
|
||||
LEntry.AddPair('totp_secret', '');
|
||||
LEntry.AddPair('totp_secret', ATotp);
|
||||
LEntry.AddPair('kind', AKind);
|
||||
LEntry.AddPair('template', '');
|
||||
LEntry.AddPair('custom_fields', TJSONArray.Create);
|
||||
|
||||
@@ -1359,6 +1359,11 @@ function openNewEntry() {
|
||||
// qu'aucune confirmation ne rattrape et qu'on ne peut relire nulle part.
|
||||
+ '<div class="field" id="nBodyRow"><div class="cap">Password</div>'
|
||||
+ '<div class="line">' + newBodyControl('login') + '</div></div>'
|
||||
// LE SECRET, pas le code. Il manquait ici alors que l'editeur le portait
|
||||
// deja : on pouvait poser un second facteur sur une entree existante, pas
|
||||
// sur une entree qu'on venait de creer - il fallait enregistrer puis
|
||||
// rouvrir. Meme intitule que l'editeur pour qu'on reconnaisse le champ.
|
||||
+ newField('nTotp', '2FA secret', 'nTotpRow')
|
||||
+ '<div class="field"><div class="line">'
|
||||
// flex:1 et non .wide : .wide ne regle que le rembourrage, et la largeur
|
||||
// pleine vient d'etre etire dans son conteneur.
|
||||
@@ -1388,6 +1393,7 @@ document.getElementById('fields').addEventListener('click', function (ev) {
|
||||
// demander de remplir ce que rien n'affichera.
|
||||
document.getElementById('nSiteRow').hidden = (kind === 'note');
|
||||
document.getElementById('nUserRow').hidden = (kind === 'note');
|
||||
document.getElementById('nTotpRow').hidden = (kind === 'note');
|
||||
|
||||
// Le corps d'une note EST son mot de passe cote stockage : meme champ,
|
||||
// autre intitule, et rien a masquer - mais plusieurs lignes.
|
||||
@@ -1418,6 +1424,7 @@ document.getElementById('fields').addEventListener('click', function (ev) {
|
||||
+ '&s=' + encodeURIComponent(v('nSite'))
|
||||
+ '&u=' + encodeURIComponent(v('nUser'))
|
||||
+ '&p=' + encodeURIComponent(document.getElementById('nPwd').value)
|
||||
+ '&o=' + encodeURIComponent(v('nTotp'))
|
||||
+ '&k=' + newKind);
|
||||
});
|
||||
document.getElementById('new').addEventListener('click', openNewEntry);
|
||||
|
||||
Reference in New Issue
Block a user