<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\User\Block\User\Edit\Tab;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\Locale\OptionInterface;
/**
* Cms page edit form main tab
*
* @SuppressWarnings(PHPMD.DepthOfInheritance)
*/
class Main extends \Magento\Backend\Block\Widget\Form\Generic
{
const CURRENT_USER_PASSWORD_FIELD = 'current_password';
/**
* @var \Magento\Backend\Model\Auth\Session
*/
protected $_authSession;
/**
* @var \Magento\Framework\Locale\ListsInterface
*/
protected $_LocaleLists;
/**
* Operates with deployed locales.
*
* @var OptionInterface
*/
private $deployedLocales;
/**
* @param \Magento\Backend\Block\Template\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\Data\FormFactory $formFactory
* @param \Magento\Backend\Model\Auth\Session $authSession
* @param \Magento\Framework\Locale\ListsInterface $localeLists
* @param array $data
* @param OptionInterface $deployedLocales Operates with deployed locales.
*/
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\Data\FormFactory $formFactory,
\Magento\Backend\Model\Auth\Session $authSession,
\Magento\Framework\Locale\ListsInterface $localeLists,
array $data = [],
OptionInterface $deployedLocales = null
) {
$this->_authSession = $authSession;
$this->_LocaleLists = $localeLists;
$this->deployedLocales = $deployedLocales
?: ObjectManager::getInstance()->get(OptionInterface::class);
parent::__construct($context, $registry, $formFactory, $data);
}
/**
* Prepare form fields
*
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
* @return \Magento\Backend\Block\Widget\Form
*/
protected function _prepareForm()
{
/** @var $model \Magento\User\Model\User */
$model = $this->_coreRegistry->registry('permissions_user');
/** @var \Magento\Framework\Data\Form $form */
$form = $this->_formFactory->create();
$form->setHtmlIdPrefix('user_');
$baseFieldset = $form->addFieldset('base_fieldset', ['legend' => __('Account Information')]);
if ($model->getUserId()) {
$baseFieldset->addField('user_id', 'hidden', ['name' => 'user_id']);
} else {
if (!$model->hasData('is_active')) {
$model->setIsActive(1);
}
}
$baseFieldset->addField(
'username',
'text',
[
'name' => 'username',
'label' => __('User Name'),
'id' => 'username',
'title' => __('User Name'),
'required' => true
]
);
$baseFieldset->addField(
'firstname',
'text',
[
'name' => 'firstname',
'label' => __('First Name'),
'id' => 'firstname',
'title' => __('First Name'),
'required' => true
]
);
$baseFieldset->addField(
'lastname',
'text',
[
'name' => 'lastname',
'label' => __('Last Name'),
'id' => 'lastname',
'title' => __('Last Name'),
'required' => true
]
);
$baseFieldset->addField(
'email',
'text',
[
'name' => 'email',
'label' => __('Email'),
'id' => 'customer_email',
'title' => __('User Email'),
'class' => 'required-entry validate-email',
'required' => true
]
);
$isNewObject = $model->isObjectNew();
if ($isNewObject) {
$passwordLabel = __('Password');
} else {
$passwordLabel = __('New Password');
}
$confirmationLabel = __('Password Confirmation');
$this->_addPasswordFields($baseFieldset, $passwordLabel, $confirmationLabel, $isNewObject);
$baseFieldset->addField(
'interface_locale',
'select',
[
'name' => 'interface_locale',
'label' => __('Interface Locale'),
'title' => __('Interface Locale'),
'values' => $this->deployedLocales->getOptionLocales(),
'class' => 'select'
]
);
if ($this->_authSession->getUser()->getId() != $model->getUserId()) {
$baseFieldset->addField(
'is_active',
'select',
[
'name' => 'is_active',
'label' => __('This account is'),
'id' => 'is_active',
'title' => __('Account Status'),
'class' => 'input-select',
'options' => ['1' => __('Active'), '0' => __('Inactive')]
]
);
}
$baseFieldset->addField('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']);
$currentUserVerificationFieldset = $form->addFieldset(
'current_user_verification_fieldset',
['legend' => __('Current User Identity Verification')]
);
$currentUserVerificationFieldset->addField(
self::CURRENT_USER_PASSWORD_FIELD,
'password',
[
'name' => self::CURRENT_USER_PASSWORD_FIELD,
'label' => __('Your Password'),
'id' => self::CURRENT_USER_PASSWORD_FIELD,
'title' => __('Your Password'),
'class' => 'validate-current-password required-entry',
'required' => true
]
);
$data = $model->getData();
unset($data['password']);
unset($data[self::CURRENT_USER_PASSWORD_FIELD]);
$form->setValues($data);
$this->setForm($form);
return parent::_prepareForm();
}
/**
* Add password input fields
*
* @param \Magento\Framework\Data\Form\Element\Fieldset $fieldset
* @param string $passwordLabel
* @param string $confirmationLabel
* @param bool $isRequired
* @return void
*/
protected function _addPasswordFields(
\Magento\Framework\Data\Form\Element\Fieldset $fieldset,
$passwordLabel,
$confirmationLabel,
$isRequired = false
) {
$requiredFieldClass = $isRequired ? ' required-entry' : '';
$fieldset->addField(
'password',
'password',
[
'name' => 'password',
'label' => $passwordLabel,
'id' => 'customer_pass',
'title' => $passwordLabel,
'class' => 'input-text validate-admin-password' . $requiredFieldClass,
'required' => $isRequired
]
);
$fieldset->addField(
'confirmation',
'password',
[
'name' => 'password_confirmation',
'label' => $confirmationLabel,
'id' => 'confirmation',
'title' => $confirmationLabel,
'class' => 'input-text validate-cpassword' . $requiredFieldClass,
'required' => $isRequired
]
);
}
}
|