mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 17:27:36 +00:00
107 lines
4.4 KiB
PHP
107 lines
4.4 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Backend\Controller\Adminhtml\System\Account;
|
|
|
|
use Magento\Framework\Validator\Exception as ValidatorException;
|
|
use Magento\Framework\Exception\AuthenticationException;
|
|
use Magento\Framework\Exception\LocalizedException;
|
|
use Magento\Framework\Controller\ResultFactory;
|
|
use Magento\Framework\Exception\State\UserLockedException;
|
|
use Magento\Security\Model\SecurityCookie;
|
|
|
|
/**
|
|
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
|
|
*/
|
|
class Save extends \Magento\Backend\Controller\Adminhtml\System\Account
|
|
{
|
|
/**
|
|
* @var SecurityCookie
|
|
*/
|
|
private $securityCookie;
|
|
|
|
/**
|
|
* Get security cookie
|
|
*
|
|
* @return SecurityCookie
|
|
* @deprecated 100.1.0
|
|
*/
|
|
private function getSecurityCookie()
|
|
{
|
|
if (!($this->securityCookie instanceof SecurityCookie)) {
|
|
return \Magento\Framework\App\ObjectManager::getInstance()->get(SecurityCookie::class);
|
|
}
|
|
return $this->securityCookie;
|
|
}
|
|
|
|
/**
|
|
* Saving edited user information
|
|
*
|
|
* @return \Magento\Backend\Model\View\Result\Redirect
|
|
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
|
|
*/
|
|
public function execute()
|
|
{
|
|
$userId = $this->_objectManager->get(\Magento\Backend\Model\Auth\Session::class)->getUser()->getId();
|
|
$password = (string)$this->getRequest()->getParam('password');
|
|
$passwordConfirmation = (string)$this->getRequest()->getParam('password_confirmation');
|
|
$interfaceLocale = (string)$this->getRequest()->getParam('interface_locale', false);
|
|
|
|
/** @var $user \Magento\User\Model\User */
|
|
$user = $this->_objectManager->create(\Magento\User\Model\User::class)->load($userId);
|
|
|
|
$user->setId($userId)
|
|
->setUserName($this->getRequest()->getParam('username', false))
|
|
->setFirstName($this->getRequest()->getParam('firstname', false))
|
|
->setLastName($this->getRequest()->getParam('lastname', false))
|
|
->setEmail(strtolower($this->getRequest()->getParam('email', false)));
|
|
|
|
if ($this->_objectManager->get(\Magento\Framework\Validator\Locale::class)->isValid($interfaceLocale)) {
|
|
$user->setInterfaceLocale($interfaceLocale);
|
|
/** @var \Magento\Backend\Model\Locale\Manager $localeManager */
|
|
$localeManager = $this->_objectManager->get(\Magento\Backend\Model\Locale\Manager::class);
|
|
$localeManager->switchBackendInterfaceLocale($interfaceLocale);
|
|
}
|
|
/** Before updating admin user data, ensure that password of current admin user is entered and is correct */
|
|
$currentUserPasswordField = \Magento\User\Block\User\Edit\Tab\Main::CURRENT_USER_PASSWORD_FIELD;
|
|
$currentUserPassword = $this->getRequest()->getParam($currentUserPasswordField);
|
|
try {
|
|
$user->performIdentityCheck($currentUserPassword);
|
|
if ($password !== '') {
|
|
$user->setPassword($password);
|
|
$user->setPasswordConfirmation($passwordConfirmation);
|
|
}
|
|
$errors = $user->validate();
|
|
if ($errors !== true && !empty($errors)) {
|
|
foreach ($errors as $error) {
|
|
$this->messageManager->addErrorMessage($error);
|
|
}
|
|
} else {
|
|
$user->save();
|
|
$user->sendNotificationEmailsIfRequired();
|
|
$this->messageManager->addSuccessMessage(__('You saved the account.'));
|
|
}
|
|
} catch (UserLockedException $e) {
|
|
$this->_auth->logout();
|
|
$this->getSecurityCookie()->setLogoutReasonCookie(
|
|
\Magento\Security\Model\AdminSessionsManager::LOGOUT_REASON_USER_LOCKED
|
|
);
|
|
} catch (ValidatorException $e) {
|
|
$this->messageManager->addMessages($e->getMessages());
|
|
if ($e->getMessage()) {
|
|
$this->messageManager->addErrorMessage($e->getMessage());
|
|
}
|
|
} catch (LocalizedException $e) {
|
|
$this->messageManager->addErrorMessage($e->getMessage());
|
|
} catch (\Exception $e) {
|
|
$this->messageManager->addErrorMessage(__('An error occurred while saving account.'));
|
|
}
|
|
|
|
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
|
|
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
|
|
return $resultRedirect->setPath("*/*/");
|
|
}
|
|
}
|