diff --git a/app/modules/web/Controllers/AccountController.php b/app/modules/web/Controllers/AccountController.php index e6332dd6..16952132 100644 --- a/app/modules/web/Controllers/AccountController.php +++ b/app/modules/web/Controllers/AccountController.php @@ -342,7 +342,6 @@ class AccountController extends ControllerBase implements CrudControllerInterfac ] ); $this->view->assign('formRoute', 'account/saveEdit'); - $this->view->assign(__FUNCTION__); $this->accountService->incrementViewCounter($id); diff --git a/app/modules/web/Controllers/ConfigAccountController.php b/app/modules/web/Controllers/ConfigAccountController.php index 666dc215..a9a83e55 100644 --- a/app/modules/web/Controllers/ConfigAccountController.php +++ b/app/modules/web/Controllers/ConfigAccountController.php @@ -2,8 +2,8 @@ /** * sysPass * - * @author nuxsmin - * @link https://syspass.org + * @author nuxsmin + * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. @@ -52,53 +52,53 @@ class ConfigAccountController extends SimpleControllerBase $eventMessage = EventMessage::factory(); // Accounts - $globalSearchEnabled = Request::analyzeBool('globalsearch', false); - $accountPassToImageEnabled = Request::analyzeBool('account_passtoimage', false); - $accountLinkEnabled = Request::analyzeBool('account_link', false); - $accountFullGroupAccessEnabled = Request::analyzeBool('account_fullgroup_access', false); - $accountCount = Request::analyzeInt('account_count', 10); - $resultsAsCardsEnabled = Request::analyzeBool('resultsascards', false); - - $configData->setGlobalSearch($globalSearchEnabled); - $configData->setAccountPassToImage($accountPassToImageEnabled); - $configData->setAccountLink($accountLinkEnabled); - $configData->setAccountFullGroupAccess($accountFullGroupAccessEnabled); - $configData->setAccountCount($accountCount); - $configData->setResultsAsCards($resultsAsCardsEnabled); + $configData->setGlobalSearch(Request::analyzeBool('account_globalsearch', false)); + $configData->setAccountPassToImage(Request::analyzeBool('account_passtoimage', false)); + $configData->setAccountLink(Request::analyzeBool('account_link', false)); + $configData->setAccountFullGroupAccess(Request::analyzeBool('account_fullgroup_access', false)); + $configData->setAccountCount(Request::analyzeInt('account_count', 10)); + $configData->setResultsAsCards(Request::analyzeBool('account_resultsascards', false)); + $configData->setAccountExpireEnabled(Request::analyzeBool('account_expire', false)); + $configData->setAccountExpireTime(Request::analyzeInt('account_expire_time', 10368000) * 24 * 3600); // Files $filesEnabled = Request::analyzeBool('files_enabled', false); - $filesAllowedSize = Request::analyzeInt('files_allowed_size', 1024); - $filesAllowedExts = ConfigUtil::filesExtsAdapter(Request::analyzeString('files_allowed_exts')); if ($filesEnabled) { + $filesAllowedSize = Request::analyzeInt('files_allowed_size', 1024); + if ($filesAllowedSize >= 16384) { $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('El tamaño máximo por archivo es de 16MB')); - } elseif ($configData->isFilesEnabled() === false) { + } + + $configData->setFilesEnabled(true); + $configData->setFilesAllowedExts(ConfigUtil::filesExtsAdapter(Request::analyzeString('files_allowed_exts'))); + $configData->setFilesAllowedSize($filesAllowedSize); + + if ($configData->isFilesEnabled() === false) { $eventMessage->addDescription(__u('Archivos habilitados')); } } elseif ($filesEnabled === false && $configData->isFilesEnabled()) { + $configData->setFilesEnabled(false); + $eventMessage->addDescription(__u('Archivos deshabilitados')); } - $configData->setFilesEnabled($filesEnabled); - $configData->setFilesAllowedExts($filesAllowedExts); - $configData->setFilesAllowedSize($filesAllowedSize); - // Public Links $pubLinksEnabled = Request::analyzeBool('publinks_enabled', false); - $pubLinksImageEnabled = Request::analyzeBool('publinks_image_enabled', false); - $pubLinksMaxTime = Request::analyzeInt('publinks_maxtime', 10); - $pubLinksMaxViews = Request::analyzeInt('publinks_maxviews', 3); - $configData->setPublinksEnabled($pubLinksEnabled); - $configData->setPublinksImageEnabled($pubLinksImageEnabled); - $configData->setPublinksMaxTime($pubLinksMaxTime * 60); - $configData->setPublinksMaxViews($pubLinksMaxViews); + if ($pubLinksEnabled === true) { + $configData->setPublinksEnabled(true); + $configData->setPublinksImageEnabled(Request::analyzeBool('publinks_image_enabled', false)); + $configData->setPublinksMaxTime(Request::analyzeInt('publinks_maxtime', 10) * 60); + $configData->setPublinksMaxViews(Request::analyzeInt('publinks_maxviews', 3)); - if ($pubLinksEnabled === true && $configData->isPublinksEnabled() === false) { - $eventMessage->addDescription(__u('Enlaces públicos habilitados')); + if ($configData->isPublinksEnabled() === false) { + $eventMessage->addDescription(__u('Enlaces públicos habilitados')); + } } elseif ($pubLinksEnabled === false && $configData->isPublinksEnabled()) { + $configData->setPublinksEnabled(false); + $eventMessage->addDescription(__u('Enlaces públicos deshabilitados')); } diff --git a/app/modules/web/Controllers/ControllerBase.php b/app/modules/web/Controllers/ControllerBase.php index b25075fa..51780c1f 100644 --- a/app/modules/web/Controllers/ControllerBase.php +++ b/app/modules/web/Controllers/ControllerBase.php @@ -44,6 +44,7 @@ use SP\Mvc\View\Template; use SP\Providers\Auth\Browser\Browser; use SP\Services\Auth\AuthException; use SP\Services\User\UserLoginResponse; +use SP\Util\Checks; /** * Clase base para los controladores @@ -149,7 +150,7 @@ abstract class ControllerBase $this->view->setBase(strtolower($this->controllerName)); - $this->isAjax = $this->router->request()->headers()->get('X_REQUESTED_WITH') === 'XMLHttpRequest'; + $this->isAjax = Checks::isAjax($this->router); if ($this->session->isLoggedIn()) { $this->userData = clone $this->session->getUserData(); @@ -178,6 +179,9 @@ abstract class ControllerBase $this->view->assign('isDemo', $this->configData->isDemoEnabled()); $this->view->assign('icons', $this->theme->getIcons()); $this->view->assign('configData', $this->configData); + + // Pass the action name to the template as a variable + $this->view->assign($this->actionName); } /** diff --git a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php index 6299e4fb..ca43da92 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountHelper.php @@ -154,7 +154,7 @@ class AccountHelper extends HelperBase $this->view->assign('allowPrivateGroup', $userProfileData->isAccPrivateGroup() && $accountData->getUserGroupId() === $userData->getUserGroupId()); $this->view->assign('accountPassDate', date('Y-m-d H:i:s', $accountData->getPassDate())); - $this->view->assign('accountPassDateChange', date('Y-m-d', $accountData->getPassDateChange() ?: 0)); + $this->view->assign('accountPassDateChange', $accountData->getPassDateChange() > 0 && date('Y-m-d', $accountData->getPassDateChange() ?: 0)); $this->view->assign('linkedAccounts', $this->accountService->getLinked($this->accountId)); $this->view->assign('accountId', $accountData->getId()); diff --git a/app/modules/web/Forms/AccountForm.php b/app/modules/web/Forms/AccountForm.php index 349623e8..6fdeb6ae 100644 --- a/app/modules/web/Forms/AccountForm.php +++ b/app/modules/web/Forms/AccountForm.php @@ -80,24 +80,24 @@ class AccountForm extends FormBase implements FormInterface $this->accountRequest = new AccountRequest(); $this->accountRequest->id = $this->itemId; $this->accountRequest->name = Request::analyzeString('name'); - $this->accountRequest->clientId = Request::analyzeInt('clientId', 0); - $this->accountRequest->categoryId = Request::analyzeInt('categoryId', 0); + $this->accountRequest->clientId = Request::analyzeInt('client_id', 0); + $this->accountRequest->categoryId = Request::analyzeInt('category_id', 0); $this->accountRequest->login = Request::analyzeString('login'); $this->accountRequest->url = Request::analyzeString('url'); $this->accountRequest->notes = Request::analyzeString('notes'); $this->accountRequest->userEditId = $this->context->getUserData()->getId(); - $this->accountRequest->otherUserEdit = (int)Request::analyzeBool('otherUserEditEnabled', false); - $this->accountRequest->otherUserGroupEdit = (int)Request::analyzeBool('otherUserGroupEditEnabled', false); - $this->accountRequest->pass = Request::analyzeEncrypted('pass'); - $this->accountRequest->isPrivate = (int)Request::analyzeBool('privateEnabled', false); - $this->accountRequest->isPrivateGroup = (int)Request::analyzeBool('privateGroupEnabled', false); - $this->accountRequest->passDateChange = Request::analyzeInt('passworddatechange_unix'); - $this->accountRequest->parentId = Request::analyzeInt('parentAccountId'); - $this->accountRequest->userGroupId = Request::analyzeInt('mainUserGroupId'); + $this->accountRequest->otherUserEdit = (int)Request::analyzeBool('other_user_edit_enabled', false); + $this->accountRequest->otherUserGroupEdit = (int)Request::analyzeBool('other_usergroup_edit_enabled', false); + $this->accountRequest->pass = Request::analyzeEncrypted('password'); + $this->accountRequest->isPrivate = (int)Request::analyzeBool('private_enabled', false); + $this->accountRequest->isPrivateGroup = (int)Request::analyzeBool('private_group_enabled', false); + $this->accountRequest->passDateChange = Request::analyzeInt('password_date_expire_unix'); + $this->accountRequest->parentId = Request::analyzeInt('parent_eccount_id'); + $this->accountRequest->userGroupId = Request::analyzeInt('main_usergroup_id'); // Arrays - $accountOtherGroups = Request::analyzeArray('otherUserGroups'); - $accountOtherUsers = Request::analyzeArray('otherUsers'); + $accountOtherGroups = Request::analyzeArray('other_usergroups'); + $accountOtherUsers = Request::analyzeArray('other_users'); $accountTags = Request::analyzeArray('tags'); if ($accountOtherUsers) { @@ -126,7 +126,7 @@ class AccountForm extends FormBase implements FormInterface throw new ValidationException(__u('Es necesaria una clave')); } - if (Request::analyzeEncrypted('passR') !== $this->accountRequest->pass) { + if (Request::analyzeEncrypted('password_repeat') !== $this->accountRequest->pass) { throw new ValidationException(__u('Las claves no coinciden')); } } diff --git a/app/modules/web/Forms/UserForm.php b/app/modules/web/Forms/UserForm.php index 0d8f0ed9..43da3c12 100644 --- a/app/modules/web/Forms/UserForm.php +++ b/app/modules/web/Forms/UserForm.php @@ -97,7 +97,7 @@ class UserForm extends FormBase implements FormInterface $this->userData->setIsAdminAcc(Request::analyzeBool('adminacc', false)); $this->userData->setIsDisabled(Request::analyzeBool('disabled', false)); $this->userData->setIsChangePass(Request::analyzeBool('changepass', false)); - $this->userData->setPass(Request::analyzeEncrypted('pass')); + $this->userData->setPass(Request::analyzeEncrypted('password')); } /** @@ -137,7 +137,7 @@ class UserForm extends FormBase implements FormInterface */ protected function checkPass() { - $userPassR = Request::analyzeEncrypted('passR'); + $userPassR = Request::analyzeEncrypted('password_repeat'); if ($this->configData->isDemoEnabled()) { throw new ValidationException(__u('Ey, esto es una DEMO!!')); diff --git a/app/modules/web/themes/material-blue/js/app-theme.js b/app/modules/web/themes/material-blue/js/app-theme.js index 0edc0526..c2a34579 100644 --- a/app/modules/web/themes/material-blue/js/app-theme.js +++ b/app/modules/web/themes/material-blue/js/app-theme.js @@ -24,14 +24,14 @@ sysPass.Theme = function (Common) { "use strict"; - var log = Common.log; + const log = Common.log; /** * Funciones a realizar en peticiones AJAX * * @type {{complete: ajax.complete}} */ - var ajax = { + const ajax = { complete: function () { log.info("ajax:complete"); @@ -45,7 +45,7 @@ sysPass.Theme = function (Common) { * * @type {{show: loading.show, hide: loading.hide}} */ - var loading = { + const loading = { elems: { $wrap: $("#wrap-loading"), $loading: $("#loading") @@ -68,12 +68,12 @@ sysPass.Theme = function (Common) { }; // Función para generar claves aleatorias. - var password = function ($target) { - var i = 0; - var chars = ""; - var genPassword = ""; + const password = function ($target) { + let i = 0; + let chars = ""; + let genPassword = ""; - var getRandomChar = function (min, max) { + const getRandomChar = function (min, max) { return chars.charAt(Math.floor((Math.random() * max) + min)); }; @@ -97,43 +97,43 @@ sysPass.Theme = function (Common) { genPassword += getRandomChar(0, chars.length - 1); } - $("#viewPass").attr("title", genPassword); + $target.attr("data-pass", genPassword); - var level = zxcvbn(genPassword); + const level = zxcvbn(genPassword); Common.passwordData.passLength = genPassword.length; - if ($target) { - var $dstParent = $target.parent(); - var $targetR = $("#" + $target.attr("id") + "R"); + // if ($target) { + const $dstParent = $target.parent(); + const $targetR = $("#" + $target.attr("id") + "_repeat"); - Common.outputResult(level, $target); + Common.outputResult(level, $target); - // Actualizar los componentes de MDL - var mdl = new MaterialTextfield(); + // Actualizar los componentes de MDL + const mdl = new MaterialTextfield(); - // Poner la clave en los input y actualizar MDL - $dstParent.find("input:password").val(genPassword); - $dstParent.addClass(mdl.CssClasses_.IS_DIRTY).removeClass(mdl.CssClasses_.IS_INVALID); + // Poner la clave en los input y actualizar MDL + $dstParent.find("input:password").val(genPassword); + $dstParent.addClass(mdl.CssClasses_.IS_DIRTY).removeClass(mdl.CssClasses_.IS_INVALID); - // Poner la clave en el input de repetición y encriptarla - if ($targetR.length > 0) { - $targetR.val(genPassword).parent().addClass(mdl.CssClasses_.IS_DIRTY).removeClass(mdl.CssClasses_.IS_INVALID); - Common.encryptFormValue($targetR); - } - - // Mostar el indicador de complejidad - $dstParent.find("#passLevel").show(500); - } else { - Common.outputResult(level); - $("input:password, input.password").val(genPassword); - $("#passLevel").show(500); + // Poner la clave en el input de repetición y encriptarla + if ($targetR.length > 0) { + $targetR.val(genPassword).parent().addClass(mdl.CssClasses_.IS_DIRTY).removeClass(mdl.CssClasses_.IS_INVALID); + Common.encryptFormValue($targetR); } + + // Mostar el indicador de complejidad + $dstParent.find("#passLevel").show(500); + // } else { + // Common.outputResult(level); + // $("input:password, input.password").val(genPassword); + // $("#passLevel").show(500); + // } }; // Diálogo de configuración de complejidad de clave - var complexityDialog = function () { + const complexityDialog = function () { - var content = + const content = "