Don't show burn after reading messages if your link isn't valid anymore

pull/1/head
yflory 4 years ago
parent 89aae79531
commit 0f81f96259

@ -28,6 +28,7 @@ define([
var Test; var Test;
var password; var password;
var initialPathInDrive; var initialPathInDrive;
var burnAfterReading;
var currentPad = window.CryptPad_location = { var currentPad = window.CryptPad_location = {
app: '', app: '',
@ -171,6 +172,8 @@ define([
}); });
var parsed = Utils.Hash.parsePadUrl(currentPad.href); var parsed = Utils.Hash.parsePadUrl(currentPad.href);
burnAfterReading = parsed && parsed.hashData && parsed.hashData.ownerKey;
currentPad.app = parsed.type; currentPad.app = parsed.type;
if (cfg.getSecrets) { if (cfg.getSecrets) {
var w = waitFor(); var w = waitFor();
@ -376,6 +379,27 @@ define([
})); }));
}).nThen(done); }).nThen(done);
} }
}).nThen(function (waitFor) {
if (!burnAfterReading) { return; }
// This is a burn after reading URL: make sure our owner key is still valid
try {
var nacl = window.nacl;
var key = nacl.util.decodeBase64(Crypto.b64AddSlashes(burnAfterReading));
var kp = nacl.sign.keyPair.fromSecretKey(key);
var publicKey = nacl.util.encodeBase64(kp.publicKey);
Cryptpad.getPadMetadata({
channel: secret.channel
}, waitFor(function (md) {
if (md && md.error) { return console.error(md.error); }
// If our key is not valid anymore, don't show BAR warning
if (!(md && Array.isArray(md.owners)) || md.owners.indexOf(publicKey) === -1) {
burnAfterReading = null;
}
}));
} catch (e) {
console.error(e);
}
}).nThen(function (waitFor) { }).nThen(function (waitFor) {
if (cfg.afterSecrets) { if (cfg.afterSecrets) {
cfg.afterSecrets(Cryptpad, Utils, secret, waitFor(), sframeChan); cfg.afterSecrets(Cryptpad, Utils, secret, waitFor(), sframeChan);
@ -402,7 +426,6 @@ define([
} }
Utils.crypto = Utils.Crypto.createEncryptor(Utils.secret.keys); Utils.crypto = Utils.Crypto.createEncryptor(Utils.secret.keys);
var parsed = Utils.Hash.parsePadUrl(currentPad.href); var parsed = Utils.Hash.parsePadUrl(currentPad.href);
var burnAfterReading = parsed && parsed.hashData && parsed.hashData.ownerKey;
if (!parsed.type) { throw new Error(); } if (!parsed.type) { throw new Error(); }
var defaultTitle = Utils.UserObject.getDefaultName(parsed); var defaultTitle = Utils.UserObject.getDefaultName(parsed);
var edPublic, curvePublic, notifications, isTemplate; var edPublic, curvePublic, notifications, isTemplate;

Loading…
Cancel
Save