From a8040ce03bd1eb71ece958897c38d760e9d4bb56 Mon Sep 17 00:00:00 2001 From: nuxsmin Date: Mon, 6 Mar 2017 22:40:14 +0100 Subject: [PATCH] * [FIX] Fixed hashing issue on user's password reset. Related #474 --- ajax/ajax_passReset.php | 5 ++- inc/SP/Auth/AuthUtil.class.php | 2 +- inc/SP/Controller/LoginController.class.php | 2 +- js/app-actions.js | 2 +- js/app-actions.min.js | 4 +-- js/app-main.js | 4 +++ js/app-main.min.js | 39 +++++++++++---------- 7 files changed, 31 insertions(+), 27 deletions(-) diff --git a/ajax/ajax_passReset.php b/ajax/ajax_passReset.php index 1f84befc..400dba18 100644 --- a/ajax/ajax_passReset.php +++ b/ajax/ajax_passReset.php @@ -27,7 +27,6 @@ use SP\Core\SessionUtil; use SP\Core\Exceptions\SPException; use SP\Http\JsonResponse; use SP\Http\Request; -use SP\Http\Response; use SP\Log\Email; use SP\Log\Log; use SP\Mgmt\Users\User; @@ -81,7 +80,6 @@ if ($userLogin && $userEmail) { Email::sendEmail($LogMessage); - $JsonResponse->setStatus(0); $JsonResponse->setDescription($LogMessage->getDescription()); Json::returnJson($JsonResponse); } elseif ($userPass && $userPassR && $userPass === $userPassR) { @@ -106,5 +104,6 @@ if ($userLogin && $userEmail) { $JsonResponse->setDescription($LogMessage->getDescription()); Json::returnJson($JsonResponse); } else { - Response::printJson(__('La clave es incorrecta o no coincide')); + $JsonResponse->setDescription(_('La clave es incorrecta o no coincide')); + Json::returnJson($JsonResponse); } \ No newline at end of file diff --git a/inc/SP/Auth/AuthUtil.class.php b/inc/SP/Auth/AuthUtil.class.php index 56f67dbb..39bdb51d 100644 --- a/inc/SP/Auth/AuthUtil.class.php +++ b/inc/SP/Auth/AuthUtil.class.php @@ -55,7 +55,7 @@ class AuthUtil && !$UserData->isUserIsLdap() && !UserPassRecover::checkPassRecoverLimit($UserData) ) { - $hash = Util::generateRandomBytes(); + $hash = Util::generateRandomBytes(16); $LogMessage = new LogMessage(); $LogMessage->setAction(__('Cambio de Clave')); diff --git a/inc/SP/Controller/LoginController.class.php b/inc/SP/Controller/LoginController.class.php index dcb8898e..b79d7fee 100644 --- a/inc/SP/Controller/LoginController.class.php +++ b/inc/SP/Controller/LoginController.class.php @@ -263,7 +263,7 @@ class LoginController throw new AuthException(SPException::SP_INFO, __('Usuario deshabilitado', false), '', self::STATUS_USER_DISABLED); } elseif ($this->UserData->isUserIsChangePass()) { - $hash = Util::generateRandomBytes(); + $hash = Util::generateRandomBytes(16); $UserPassRecoverData = new UserPassRecoverData(); $UserPassRecoverData->setUserpassrUserId($this->UserData->getUserId()); diff --git a/js/app-actions.js b/js/app-actions.js index 136891d0..8e5eb4b9 100644 --- a/js/app-actions.js +++ b/js/app-actions.js @@ -311,7 +311,7 @@ sysPass.Actions = function (Common) { if (json.status == 0) { setTimeout(function () { Common.redirect("index.php"); - }, 1000); + }, 2000); } }); } diff --git a/js/app-actions.min.js b/js/app-actions.min.js index 60e137a6..34bb2d6d 100644 --- a/js/app-actions.min.js +++ b/js/app-actions.min.js @@ -1,5 +1,5 @@ var $jscomp={scope:{},findInternal:function(c,d,k){c instanceof String&&(c=String(c));for(var f=c.length,g=0;g";showDialog({text:e,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.appRequests().getActionCall(b,function(a){c.msg.out(a)})}},positive:{title:c.config().LANG[43],onClick:function(e){e.preventDefault();b.data.notify=1;c.appRequests().getActionCall(b,function(b){c.msg.out(b);g({actionId:a.data("nextaction-id"), itemId:a.data("item-id")})})}}})},refresh:function(a){d.info("link:refresh");var b={itemId:a.data("item-id"),actionId:a.data("action-id"),sk:c.sk.get(),activeTab:a.data("activetab")},e=c.appRequests().getRequestOpts();e.url=f.link;e.data=b;c.appRequests().getActionCall(e,function(b){c.msg.out(b);0===b.status&&g({actionId:a.data("nextaction-id"),itemId:a.data("activetab")})})}},eventlog:{nav:function(a){if(void 0===a.data("start"))return!1;var b=c.appRequests().getRequestOpts();b.url=f.eventlog;b.method= "get";b.type="html";b.data={actionId:a.data("action-id"),sk:c.sk.get(),isAjax:1,start:a.data("start"),count:a.data("count"),current:a.data("current")};c.appRequests().getActionCall(b,function(a){$("#content").html(a);c.scrollUp()})},clear:function(a){var b='

'+c.config().LANG[20]+"

";showDialog({text:b,negative:{title:c.config().LANG[44],onClick:function(a){a.preventDefault();c.msg.error(c.config().LANG[44])}},positive:{title:c.config().LANG[43],onClick:function(b){b.preventDefault(); diff --git a/js/app-main.js b/js/app-main.js index 79433a9f..f5930e99 100644 --- a/js/app-main.js +++ b/js/app-main.js @@ -189,6 +189,10 @@ sysPass.Main = function () { msg.ok(description); msg.sticky(description); break; + case 101: + msg.error(description); + msg.sticky(description); + break; default: msg.error(description); } diff --git a/js/app-main.min.js b/js/app-main.min.js index 99658f8e..df7767a8 100644 --- a/js/app-main.min.js +++ b/js/app-main.min.js @@ -1,22 +1,23 @@ var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,g,f){if(f.get||f.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[g]=f.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_"; $jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(a){return $jscomp.SYMBOL_PREFIX+(a||"")+$jscomp.symbolCounter_++}; $jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var g=0;return $jscomp.iteratorPrototype(function(){return g"+b.messages.join("
"));switch(a){case 0:l.ok(d);break;case 1:case 2:case 4:l.error(d);break;case 3:l.warn(d);break;case 10:e.main.logout(); -break;case 100:l.ok(d);l.sticky(d);break;default:l.error(d)}}},html:{error:function(b){return'

Oops...
'+a.LANG[1]+"
"+b+"

"}}},x=function(b){h.info("getEnvironment");var k=window.location.pathname.split("/");a.APP_ROOT=window.location.protocol+"//"+window.location.host+function(){for(var b="",a=1;a<=k.length-2;a++)b+="/"+k[a];return b}();var d=m.getRequestOpts();d.url="/ajax/ajax_getEnvironment.php";d.method="get";d.async=!1;d.useLoading=!1;d.data={isAjax:1};m.getActionCall(d, -function(d){a.LANG=d.lang;a.PK=d.pk;a.CHECK_UPDATES=d.check_updates;a.CRYPT.setPublicKey(d.pk);a.TIMEZONE=d.timezone;a.LOCALE=d.locale;a.DEBUG=d.debug;a.MAX_FILE_SIZE=parseInt(d.max_file_size);"function"===typeof b&&b()})},t={get:function(){h.info("sk:get");return $("#container").attr("data-sk")},set:function(b){h.info("sk:set");$("#container").attr("data-sk",b)}},y=function(){var b=$("#container");if(!b.hasClass("content-no-auto-resize")){var a=$("#content").height()+200;b.css("height",a)}},z=function(){$("html, body").animate({scrollTop:0}, -"slow")},A=function(a){for(var b=[],d,c=window.location.href.slice(window.location.href.indexOf("?")+1).split("&"),f=0;fa.MAX_FILE_SIZE)l.error(a.LANG[18]+"
"+p.name+" (Max: "+a.MAX_FILE_SIZE+")");else{var c;a:{c=p.name;for(var g=b.data("files-ext").toLowerCase().split(","),e=0;e<=g.length;e++)if(-1!==c.indexOf(g[e])){c=!0;break a}c=!1}c?f(d[k]):l.error(a.LANG[19]+"
"+p.name)}}},g=function(a){var b=$("#fileUploadForm");!1===a&&b.hide();a=b.find("input[type='file']");a.on("change",function(){"function"=== -typeof d.beforeSendAction&&d.beforeSendAction();c(this.files)});return a};window.File&&window.FileList&&window.FileReader?function(){h.info("fileUpload:init");var a=g(!1);b.on("dragover dragenter",function(a){h.info("fileUpload:drag");a.stopPropagation();a.preventDefault()});b.on("drop",function(a){h.info("fileUpload:drop");a.stopPropagation();a.preventDefault();"function"===typeof d.beforeSendAction&&d.beforeSendAction();c(a.originalEvent.dataTransfer.files)});b.on("click",function(){a.click()})}(): -g(!0);return d},D=function(a){h.info("checkPassLevel");g.passLength=a.val().length;v(zxcvbn(a.val()),a)},v=function(b,k){h.info("outputResult");var d=$(".passLevel-"+k.attr("id")),c=b.score;d.show();d.removeClass("weak good strong strongest");0===g.passLength?d.attr("title","").empty():g.passLengtha.secondary?a.calc=a.main/a.rel:a.maina.secondary&&(a.main*=a.factor,g(a));return a},e=function(){f.main= -b;f.secondary=d;var e=g(f);a.css({width:e.main,height:e.calc});c.width=e.main;c.height=e.calc},l=function(){f.main=d;f.secondary=b;var e=g(f);a.css({width:e.calc,height:e.main});c.width=e.calc;c.height=e.main};c.width>b?e():c.height>d&&(h.info("height"),l());return c},J=function(){return $.extend({log:h,config:function(){return a},appTheme:function(){return f},appActions:function(){return e},appTriggers:function(){return c},appRequests:function(){return m},evalAction:H,resizeImage:I},q)},K=function(){return{actions:function(){return e}, -triggers:function(){return c},theme:function(){return f},sk:t,msg:l,log:h,passToClip:0,passwordData:g,outputResult:v,checkboxDetect:E,checkPassLevel:D,encryptFormValue:u,fileUpload:C,redirect:r,scrollUp:z,setContentSize:y}};(function(){h.info("init");q=K();n=J();c=sysPass.Triggers(n);e=sysPass.Actions(n);m=sysPass.Requests(n);x(function(){""!==a.PK&&G();"function"===typeof sysPass.Theme&&(f=sysPass.Theme(n));!0===a.CHECK_UPDATES&&e.main.getUpdates();F();w();B()})})();return q}; +$jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};$jscomp.array=$jscomp.array||{};$jscomp.iteratorFromArray=function(a,g){$jscomp.initSymbolIterator();a instanceof String&&(a+="");var f=0,d={next:function(){if(f"+b.messages.join("
"));switch(a){case 0:h.ok(c);break;case 1:case 2:case 4:h.error(c);break;case 3:h.warn(c);break;case 10:e.main.logout(); +break;case 100:h.ok(c);h.sticky(c);break;case 101:h.error(c);h.sticky(c);break;default:h.error(c)}}},html:{error:function(b){return'

Oops...
'+a.LANG[1]+"
"+b+"

"}}},x=function(b){k.info("getEnvironment");var l=window.location.pathname.split("/");a.APP_ROOT=window.location.protocol+"//"+window.location.host+function(){for(var b="",a=1;a<=l.length-2;a++)b+="/"+l[a];return b}();var c=m.getRequestOpts();c.url="/ajax/ajax_getEnvironment.php";c.method="get";c.async=!1;c.useLoading= +!1;c.data={isAjax:1};m.getActionCall(c,function(c){a.LANG=c.lang;a.PK=c.pk;a.CHECK_UPDATES=c.check_updates;a.CRYPT.setPublicKey(c.pk);a.TIMEZONE=c.timezone;a.LOCALE=c.locale;a.DEBUG=c.debug;a.MAX_FILE_SIZE=parseInt(c.max_file_size);"function"===typeof b&&b()})},t={get:function(){k.info("sk:get");return $("#container").attr("data-sk")},set:function(b){k.info("sk:set");$("#container").attr("data-sk",b)}},y=function(){var b=$("#container");if(!b.hasClass("content-no-auto-resize")){var a=$("#content").height()+ +200;b.css("height",a)}},z=function(){$("html, body").animate({scrollTop:0},"slow")},A=function(a){for(var b=[],c,d=window.location.href.slice(window.location.href.indexOf("?")+1).split("&"),f=0;fa.MAX_FILE_SIZE)h.error(a.LANG[18]+"
"+p.name+" (Max: "+a.MAX_FILE_SIZE+")");else{var d;a:{d=p.name;for(var g=b.data("files-ext").toLowerCase().split(","),e=0;e<=g.length;e++)if(-1!==d.indexOf(g[e])){d=!0;break a}d=!1}d?f(c[l]):h.error(a.LANG[19]+"
"+p.name)}}},g=function(a){var b=$("#fileUploadForm");!1===a&& +b.hide();a=b.find("input[type='file']");a.on("change",function(){"function"===typeof c.beforeSendAction&&c.beforeSendAction();d(this.files)});return a};window.File&&window.FileList&&window.FileReader?function(){k.info("fileUpload:init");var a=g(!1);b.on("dragover dragenter",function(a){k.info("fileUpload:drag");a.stopPropagation();a.preventDefault()});b.on("drop",function(a){k.info("fileUpload:drop");a.stopPropagation();a.preventDefault();"function"===typeof c.beforeSendAction&&c.beforeSendAction(); +d(a.originalEvent.dataTransfer.files)});b.on("click",function(){a.click()})}():g(!0);return c},D=function(a){k.info("checkPassLevel");g.passLength=a.val().length;v(zxcvbn(a.val()),a)},v=function(b,l){k.info("outputResult");var c=$(".passLevel-"+l.attr("id")),d=b.score;c.show();c.removeClass("weak good strong strongest");0===g.passLength?c.attr("title","").empty():g.passLengtha.secondary?a.calc=a.main/a.rel:a.maina.secondary&& +(a.main*=a.factor,g(a));return a},e=function(){f.main=b;f.secondary=c;var e=g(f);a.css({width:e.main,height:e.calc});d.width=e.main;d.height=e.calc},h=function(){f.main=c;f.secondary=b;var e=g(f);a.css({width:e.calc,height:e.main});d.width=e.calc;d.height=e.main};d.width>b?e():d.height>c&&(k.info("height"),h());return d},J=function(){return $.extend({log:k,config:function(){return a},appTheme:function(){return f},appActions:function(){return e},appTriggers:function(){return d},appRequests:function(){return m}, +evalAction:H,resizeImage:I},q)},K=function(){return{actions:function(){return e},triggers:function(){return d},theme:function(){return f},sk:t,msg:h,log:k,passToClip:0,passwordData:g,outputResult:v,checkboxDetect:E,checkPassLevel:D,encryptFormValue:u,fileUpload:C,redirect:r,scrollUp:z,setContentSize:y}};(function(){k.info("init");q=K();n=J();d=sysPass.Triggers(n);e=sysPass.Actions(n);m=sysPass.Requests(n);x(function(){""!==a.PK&&G();"function"===typeof sysPass.Theme&&(f=sysPass.Theme(n));!0===a.CHECK_UPDATES&& +e.main.getUpdates();F();w();B()})})();return q};