diff --git a/inc/SP/Controller/ItemActionController.class.php b/inc/SP/Controller/ItemActionController.class.php index 5de0c036..9eabcf53 100644 --- a/inc/SP/Controller/ItemActionController.class.php +++ b/inc/SP/Controller/ItemActionController.class.php @@ -64,6 +64,7 @@ use SP\Mgmt\Profiles\Profile; use SP\Mgmt\PublicLinks\PublicLink; use SP\Mgmt\Tags\Tag; use SP\Mgmt\Users\User; +use SP\Mgmt\Users\UserLdap; use SP\Mgmt\Users\UserLdapSync; use SP\Mgmt\Users\UserUtil; use SP\Util\Checks; @@ -217,6 +218,7 @@ class ItemActionController implements ItemControllerInterface protected function userAction() { $Form = new UserForm($this->itemId); + $Form->setIsLdap(Request::analyze('isLdap', 0)); $Form->validate($this->actionId); $this->setCustomFieldData(ActionsInterface::ACTION_USR_USERS); @@ -224,6 +226,7 @@ class ItemActionController implements ItemControllerInterface switch ($this->actionId) { case ActionsInterface::ACTION_USR_USERS_NEW: User::getItem($Form->getItemData())->add(); + $this->addCustomFieldData(); $this->LogMessage->setAction(__('Crear Usuario', false)); @@ -238,7 +241,12 @@ class ItemActionController implements ItemControllerInterface } break; case ActionsInterface::ACTION_USR_USERS_EDIT: - User::getItem($Form->getItemData())->update(); + if ($Form->getIsLdap()) { + UserLdap::getItem($Form->getItemData())->update(); + } else { + User::getItem($Form->getItemData())->update(); + } + $this->updateCustomFieldData(); $this->LogMessage->setAction(__('Actualizar Usuario', false)); diff --git a/inc/SP/Forms/UserForm.class.php b/inc/SP/Forms/UserForm.class.php index d6e0571e..1ec59d12 100644 --- a/inc/SP/Forms/UserForm.class.php +++ b/inc/SP/Forms/UserForm.class.php @@ -43,6 +43,10 @@ class UserForm extends FormBase implements FormInterface * @var UserData */ protected $UserData; + /** + * @var int + */ + protected $isLdap = 0; /** * Validar el formulario @@ -75,67 +79,6 @@ class UserForm extends FormBase implements FormInterface return true; } - /** - * @throws ValidationException - */ - protected function checkCommon() - { - $isLdap = Request::analyze('isLdap', 0); - - if (!$isLdap && !$this->UserData->getUserName()) { - throw new ValidationException(__('Es necesario un nombre de usuario', false)); - } elseif (!$isLdap && !$this->UserData->getUserLogin()) { - throw new ValidationException(__('Es necesario un login', false)); - } elseif (!$this->UserData->getUserProfileId()) { - throw new ValidationException(__('Es necesario un perfil', false)); - } elseif (!$this->UserData->getUserGroupId()) { - throw new ValidationException(__('Es necesario un grupo', false)); - } elseif (!$isLdap && !$this->UserData->getUserEmail()) { - throw new ValidationException(__('Es necesario un email', false)); - } elseif (Checks::demoIsEnabled() && !Session::getUserData()->isUserIsAdminApp() && $this->UserData->getUserLogin() === 'demo') { - throw new ValidationException(__('Ey, esto es una DEMO!!', false)); - } - } - - /** - * @throws ValidationException - */ - protected function checkPass() - { - $userPassR = Request::analyzeEncrypted('passR'); - - if (Checks::demoIsEnabled() && UserUtil::getUserLoginById($this->itemId) === 'demo') { - throw new ValidationException(__('Ey, esto es una DEMO!!', false)); - } elseif (!$userPassR || !$this->UserData->getUserPass()) { - throw new ValidationException(__('La clave no puede estar en blanco', false)); - } elseif ($this->UserData->getUserPass() !== $userPassR) { - throw new ValidationException(__('Las claves no coinciden', false)); - } - } - - /** - * @throws ValidationException - */ - protected function checkDelete() - { - if (Checks::demoIsEnabled() && UserUtil::getUserLoginById($this->itemId) === 'demo') { - throw new ValidationException(__('Ey, esto es una DEMO!!', false)); - } elseif ( - (!is_array($this->itemId) === Session::getUserData()->getUserId()) - || (is_array($this->itemId) && in_array(Session::getUserData()->getUserId(), $this->itemId)) - ) { - throw new ValidationException(__('No es posible eliminar, usuario en uso', false)); - } - } - - /** - * @return UserData - */ - public function getItemData() - { - return $this->UserData; - } - /** * Analizar los datos de la petición HTTP * @@ -157,4 +100,94 @@ class UserForm extends FormBase implements FormInterface $this->UserData->setUserIsChangePass(Request::analyze('changepass', 0, false, 1)); $this->UserData->setUserPass(Request::analyzeEncrypted('pass')); } + + /** + * @throws ValidationException + */ + protected function checkCommon() + { + if (!$this->isLdap && !$this->UserData->getUserName()) { + throw new ValidationException(__('Es necesario un nombre de usuario', false)); + } + + if (!$this->isLdap && !$this->UserData->getUserLogin()) { + throw new ValidationException(__('Es necesario un login', false)); + } + + if (!$this->UserData->getUserProfileId()) { + throw new ValidationException(__('Es necesario un perfil', false)); + } + + if (!$this->UserData->getUserGroupId()) { + throw new ValidationException(__('Es necesario un grupo', false)); + } + + if (!$this->isLdap && !$this->UserData->getUserEmail()) { + throw new ValidationException(__('Es necesario un email', false)); + } + + if (Checks::demoIsEnabled() && !Session::getUserData()->isUserIsAdminApp() && $this->UserData->getUserLogin() === 'demo') { + throw new ValidationException(__('Ey, esto es una DEMO!!', false)); + } + } + + /** + * @throws ValidationException + */ + protected function checkPass() + { + $userPassR = Request::analyzeEncrypted('passR'); + + if (Checks::demoIsEnabled() && UserUtil::getUserLoginById($this->itemId) === 'demo') { + throw new ValidationException(__('Ey, esto es una DEMO!!', false)); + } + + if (!$userPassR || !$this->UserData->getUserPass()) { + throw new ValidationException(__('La clave no puede estar en blanco', false)); + } + + if ($this->UserData->getUserPass() !== $userPassR) { + throw new ValidationException(__('Las claves no coinciden', false)); + } + } + + /** + * @throws ValidationException + */ + protected function checkDelete() + { + if (Checks::demoIsEnabled() && UserUtil::getUserLoginById($this->itemId) === 'demo') { + throw new ValidationException(__('Ey, esto es una DEMO!!', false)); + } + + if ((!is_array($this->itemId) === Session::getUserData()->getUserId()) + || (is_array($this->itemId) && in_array(Session::getUserData()->getUserId(), $this->itemId)) + ) { + throw new ValidationException(__('No es posible eliminar, usuario en uso', false)); + } + } + + /** + * @return UserData + */ + public function getItemData() + { + return $this->UserData; + } + + /** + * @return int + */ + public function getIsLdap() + { + return $this->isLdap; + } + + /** + * @param int $isLdap + */ + public function setIsLdap($isLdap) + { + $this->isLdap = $isLdap; + } } \ No newline at end of file diff --git a/inc/SP/Mgmt/Users/UserLdap.class.php b/inc/SP/Mgmt/Users/UserLdap.class.php index de7e5fee..d1eec5ce 100644 --- a/inc/SP/Mgmt/Users/UserLdap.class.php +++ b/inc/SP/Mgmt/Users/UserLdap.class.php @@ -68,9 +68,6 @@ class UserLdap extends User /** * @return mixed - * @throws \SP\Core\Exceptions\QueryException - * @throws \SP\Core\Exceptions\ConstraintException - * @throws \phpmailer\phpmailerException * @throws SPException */ public function add() @@ -170,22 +167,32 @@ class UserLdap extends User */ public function update() { - $query = 'UPDATE usrData SET - user_pass = ?, - user_hashSalt = \'\', + $query = /** @lang SQL */ + 'UPDATE usrData SET user_name = ?, user_email = ?, + user_notes = ?, + user_groupId = ?, + user_profileId = ?, + user_isAdminApp = ?, + user_isAdminAcc = ?, + user_isDisabled = ?, user_lastUpdate = NOW(), - user_isLdap = 1 - WHERE LOWER(user_login) = LOWER(?) LIMIT 1'; + user_isLdap = 1 + WHERE user_id = ? LIMIT 1'; $Data = new QueryData(); $Data->setQuery($query); - $Data->addParam(Hash::hashKey($this->itemData->getUserPass())); $Data->addParam($this->itemData->getUserName()); $Data->addParam($this->itemData->getUserEmail()); - $Data->addParam($this->itemData->getUserLogin()); - $Data->setOnErrorMessage(__('Error al actualizar la clave del usuario en la BBDD', false)); + $Data->addParam($this->itemData->getUserNotes()); + $Data->addParam($this->itemData->getUserGroupId()); + $Data->addParam($this->itemData->getUserProfileId()); + $Data->addParam($this->itemData->isUserIsAdminApp()); + $Data->addParam($this->itemData->isUserIsAdminAcc()); + $Data->addParam($this->itemData->isUserIsDisabled()); + $Data->addParam($this->itemData->getUserId()); + $Data->setOnErrorMessage(__('Error al actualizar el usuario', false)); DB::getQuery($Data); diff --git a/inc/SP/Util/Util.class.php b/inc/SP/Util/Util.class.php index 161c4357..e9590188 100644 --- a/inc/SP/Util/Util.class.php +++ b/inc/SP/Util/Util.class.php @@ -407,7 +407,7 @@ class Util */ public static function getVersion($retBuild = false, $normalized = false) { - $build = 17042005; + $build = 17042101; $version = [2, 1, 7]; if ($normalized === true) { diff --git a/inc/themes/material-blue/views/itemshow/users.inc b/inc/themes/material-blue/views/itemshow/users.inc index 8ede837f..7f908b7b 100644 --- a/inc/themes/material-blue/views/itemshow/users.inc +++ b/inc/themes/material-blue/views/itemshow/users.inc @@ -40,7 +40,7 @@ if ($user->getUserLogin() === 'demo') { isUserIsLdap() || $isReadonly ? $isReadonly : ''; ?>> + maxlength="80" isUserIsLdap() || $isReadonly ? 'readonly' : ''; ?>>