check if the new address is not already used

This commit is contained in:
Andris Reinman 2016-12-07 16:21:22 +02:00
parent 7fce6e28fa
commit 57c6e0ae79

View file

@ -1167,24 +1167,41 @@ module.exports.updateAddress = (list, cid, updates, optInIp, callback) => {
let query = 'SELECT `id`, `email` FROM `subscription__' + list.id + '` WHERE `cid`=? LIMIT 1'; let query = 'SELECT `id`, `email` FROM `subscription__' + list.id + '` WHERE `cid`=? LIMIT 1';
let args = [cid]; let args = [cid];
connection.query(query, args, (err, rows) => { connection.query(query, args, (err, rows) => {
connection.release();
if (err) { if (err) {
connection.release();
return callback(err); return callback(err);
} }
if (!rows || !rows.length) { if (!rows || !rows.length) {
connection.release();
return callback(new Error('Unknown subscription ID')); return callback(new Error('Unknown subscription ID'));
} }
if (rows[0].email === emailNew) { if (rows[0].email === emailNew) {
connection.release();
return callback(new Error('Nothing seems to be changed')); return callback(new Error('Nothing seems to be changed'));
} }
module.exports.addConfirmation(list, emailNew, optInIp, { let old = rows[0];
action: 'update',
cid, let query = 'SELECT `id` FROM `subscription__' + list.id + '` WHERE `email`=? AND `cid`<>? LIMIT 1';
subscriber: rows[0].id, let args = [emailNew, cid];
emailOld: rows[0].email connection.query(query, args, (err, rows) => {
}, callback); connection.release();
if (err) {
return callback(err);
}
if (rows && rows[0] && rows[0].id) {
return callback(new Error('This address is already registered by someone else'));
}
module.exports.addConfirmation(list, emailNew, optInIp, {
action: 'update',
cid,
subscriber: old.id,
emailOld: old.email
}, callback);
});
}); });
}); });
}); });