From 84217ca865a176bf9dbb94527ce0ef8dee623ed7 Mon Sep 17 00:00:00 2001 From: Michael Weimann Date: Sat, 26 Nov 2016 14:33:44 +0100 Subject: [PATCH] Fixes preferences master password handling --- app/view/preferences/PreferencesController.js | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/app/view/preferences/PreferencesController.js b/app/view/preferences/PreferencesController.js index b635e075..c90e9aec 100644 --- a/app/view/preferences/PreferencesController.js +++ b/app/view/preferences/PreferencesController.js @@ -13,12 +13,28 @@ Ext.define('Rambox.view.preferences.PreferencesController', { var values = me.getView().down('form').getForm().getFieldValues(); - // Master Password - if ( values.master_password && (Ext.isEmpty(values.master_password1) || Ext.isEmpty(values.master_password2)) ) return; - if ( values.master_password && (values.master_password1 !== values.master_password2) ) return; - if ( values.master_password ) values.master_password = Rambox.util.MD5.encypt(values.master_password1); - delete values.master_password1; - delete values.master_password2; + // master password activated and only one of the fields "password" or "password confirmation" filled + if (values.master_password === true && + (Ext.isEmpty(values.master_password1) === false && Ext.isEmpty(values.master_password2) === true || + Ext.isEmpty(values.master_password1) === true && Ext.isEmpty(values.master_password2) === false)) return; + + // password and confirmation don't match + if (values.master_password === true && (values.master_password1 !== values.master_password2)) return; + + // master password activated and changed + if (values.master_password === true && + Ext.isEmpty(values.master_password1) === false && + Ext.isEmpty(values.master_password2) === false) { + + values.master_password = Rambox.util.MD5.encypt(values.master_password1); + delete values.master_password1; + delete values.master_password2; + } + + // prevent overwriting password when unchanged + if (values.master_password === true) { + delete values.master_password; + } // Proxy if ( values.proxy && (Ext.isEmpty(values.proxyHost) || Ext.isEmpty(values.proxyPort)) ) return;