diff --git a/setup/config/di.config.php b/setup/config/di.config.php index 9c73aae475358f63c853c9458a6cb67e6796d022..81ddbde7adb1ebf1e17db06ee92852c39338f8e8 100644 --- a/setup/config/di.config.php +++ b/setup/config/di.config.php @@ -21,6 +21,7 @@ return [ 'Magento\Setup\Controller\Environment', 'Magento\Setup\Controller\DependencyCheck', 'Magento\Setup\Controller\DatabaseCheck', + 'Magento\Setup\Controller\ValidateAdminCredentials', 'Magento\Setup\Controller\AddDatabase', 'Magento\Setup\Controller\WebConfiguration', 'Magento\Setup\Controller\CustomizeYourStore', diff --git a/setup/pub/magento/setup/create-admin-account.js b/setup/pub/magento/setup/create-admin-account.js index ec9fdf9c6b248453ce8aec127ab3677bac6349c7..dd8357dd9a568e4e1aa8b88add9868478f23009e 100644 --- a/setup/pub/magento/setup/create-admin-account.js +++ b/setup/pub/magento/setup/create-admin-account.js @@ -5,14 +5,14 @@ 'use strict'; angular.module('create-admin-account', ['ngStorage']) - .controller('createAdminAccountController', ['$scope', '$state', '$localStorage', function ($scope, $state, $localStorage) { + .controller('createAdminAccountController', ['$scope', '$state', '$localStorage', '$http', function ($scope, $state, $localStorage, $http) { $scope.admin = { 'passwordStatus': { class: 'none', label: 'None' } }; - + $scope.passwordStatusChange = function () { if (angular.isUndefined($scope.admin.password)) { return; @@ -41,6 +41,25 @@ angular.module('create-admin-account', ['ngStorage']) $scope.admin = $localStorage.admin; } + $scope.validateCredentials = function () { + var data = { + 'db': $localStorage.db, + 'admin': $localStorage.admin, + 'store': $localStorage.store, + 'config': $localStorage.config + }; + $http.post('index.php/validate-admin-credentials', data) + .success(function (data) { + $scope.validateCredentials.result = data; + if ($scope.validateCredentials.result.success) { + $scope.nextState(); + } + }) + .error(function (data) { + $scope.validateCredentials.failed = data; + }); + }; + $scope.$on('nextState', function () { $localStorage.admin = $scope.admin; }); diff --git a/setup/src/Magento/Setup/Controller/Install.php b/setup/src/Magento/Setup/Controller/Install.php index 647ba4e59f7d08c734567b997c0a287d92b8fe6f..5b3507911ef4e3cfc2df45e0583b595e207c5c27 100644 --- a/setup/src/Magento/Setup/Controller/Install.php +++ b/setup/src/Magento/Setup/Controller/Install.php @@ -6,21 +6,18 @@ namespace Magento\Setup\Controller; -use Magento\Setup\Model\AdminAccount; +use Magento\Framework\App\DeploymentConfig; use Magento\Framework\Config\ConfigOptionsListConstants as SetupConfigOptionsList; -use Magento\Backend\Setup\ConfigOptionsList as BackendConfigOptionsList; +use Magento\SampleData; use Magento\Setup\Model\Installer; use Magento\Setup\Model\Installer\ProgressFactory; use Magento\Setup\Model\InstallerFactory; -use Magento\Setup\Model\StoreConfigurationDataMapper as UserConfig; +use Magento\Setup\Model\RequestDataConverter; use Magento\Setup\Model\WebLogger; use Zend\Json\Json; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\JsonModel; use Zend\View\Model\ViewModel; -use Magento\Setup\Console\Command\InstallCommand; -use Magento\SampleData; -use Magento\Framework\App\DeploymentConfig; /** * Install controller @@ -54,6 +51,11 @@ class Install extends AbstractActionController */ private $deploymentConfig; + /** + * @var RequestDataConverter + */ + private $requestDataConverter; + /** * Default Constructor * @@ -62,19 +64,22 @@ class Install extends AbstractActionController * @param ProgressFactory $progressFactory * @param \Magento\Framework\Setup\SampleData\State $sampleDataState * @param \Magento\Framework\App\DeploymentConfig $deploymentConfig + * @param RequestDataConverter $requestDataConverter */ public function __construct( WebLogger $logger, InstallerFactory $installerFactory, ProgressFactory $progressFactory, \Magento\Framework\Setup\SampleData\State $sampleDataState, - DeploymentConfig $deploymentConfig + DeploymentConfig $deploymentConfig, + RequestDataConverter $requestDataConverter ) { $this->log = $logger; $this->installer = $installerFactory->create($logger); $this->progressFactory = $progressFactory; $this->sampleDataState = $sampleDataState; $this->deploymentConfig = $deploymentConfig; + $this->requestDataConverter = $requestDataConverter; } /** @@ -91,7 +96,6 @@ class Install extends AbstractActionController * Index Action * * @return JsonModel - * @SuppressWarnings(PHPMD.NPathComplexity) */ public function startAction() { @@ -99,11 +103,9 @@ class Install extends AbstractActionController $json = new JsonModel; try { $this->checkForPriorInstall(); - $data = array_merge( - $this->importDeploymentConfigForm(), - $this->importUserConfigForm(), - $this->importAdminUserForm() - ); + $content = $this->getRequest()->getContent(); + $source = $content ? $source = Json::decode($content, Json::TYPE_ARRAY) : []; + $data = $this->requestDataConverter->convert($source); $this->installer->install($data); $json->setVariable( 'key', @@ -168,102 +170,4 @@ class Install extends AbstractActionController throw new \Magento\Setup\Exception('Magento application is already installed.'); } } - - /** - * Maps data from request to format of deployment config model - * - * @return array - * @SuppressWarnings(PHPMD.CyclomaticComplexity) - * @SuppressWarnings(PHPMD.NPathComplexity) - */ - private function importDeploymentConfigForm() - { - $content = $this->getRequest()->getContent(); - $source = []; - if ($content) { - $source = Json::decode($content, Json::TYPE_ARRAY); - } - - $result = []; - $result[SetupConfigOptionsList::INPUT_KEY_DB_HOST] = isset($source['db']['host']) ? $source['db']['host'] : ''; - $result[SetupConfigOptionsList::INPUT_KEY_DB_NAME] = isset($source['db']['name']) ? $source['db']['name'] : ''; - $result[SetupConfigOptionsList::INPUT_KEY_DB_USER] = isset($source['db']['user']) ? $source['db']['user'] :''; - $result[SetupConfigOptionsList::INPUT_KEY_DB_PASSWORD] = - isset($source['db']['password']) ? $source['db']['password'] : ''; - $result[SetupConfigOptionsList::INPUT_KEY_DB_PREFIX] = - isset($source['db']['tablePrefix']) ? $source['db']['tablePrefix'] : ''; - $result[BackendConfigOptionsList::INPUT_KEY_BACKEND_FRONTNAME] = isset($source['config']['address']['admin']) - ? $source['config']['address']['admin'] : ''; - $result[SetupConfigOptionsList::INPUT_KEY_ENCRYPTION_KEY] = isset($source['config']['encrypt']['key']) - ? $source['config']['encrypt']['key'] : null; - $result[SetupConfigOptionsList::INPUT_KEY_SESSION_SAVE] = isset($source['config']['sessionSave']['type']) - ? $source['config']['sessionSave']['type'] : SetupConfigOptionsList::SESSION_SAVE_FILES; - $result[Installer::ENABLE_MODULES] = isset($source['store']['selectedModules']) - ? implode(',', $source['store']['selectedModules']) : ''; - $result[Installer::DISABLE_MODULES] = isset($source['store']['allModules']) - ? implode(',', array_diff($source['store']['allModules'], $source['store']['selectedModules'])) : ''; - return $result; - } - - /** - * Maps data from request to format of user config model - * - * @return array - * @SuppressWarnings(PHPMD.CyclomaticComplexity) - * @SuppressWarnings(PHPMD.NPathComplexity) - */ - private function importUserConfigForm() - { - $result = []; - $source = []; - $content = $this->getRequest()->getContent(); - if ($content) { - $source = Json::decode($content, Json::TYPE_ARRAY); - } - if (isset($source['config']['address']['base_url']) && !empty($source['config']['address']['base_url'])) { - $result[UserConfig::KEY_BASE_URL] = $source['config']['address']['base_url']; - } - $result[UserConfig::KEY_USE_SEF_URL] = isset($source['config']['rewrites']['allowed']) - ? $source['config']['rewrites']['allowed'] : ''; - $result[UserConfig::KEY_IS_SECURE] = isset($source['config']['https']['front']) - ? $source['config']['https']['front'] : ''; - $result[UserConfig::KEY_IS_SECURE_ADMIN] = isset($source['config']['https']['admin']) - ? $source['config']['https']['admin'] : ''; - $result[UserConfig::KEY_BASE_URL_SECURE] = (isset($source['config']['https']['front']) - || isset($source['config']['https']['admin'])) - ? $source['config']['https']['text'] : ''; - $result[UserConfig::KEY_LANGUAGE] = isset($source['store']['language']) - ? $source['store']['language'] : ''; - $result[UserConfig::KEY_TIMEZONE] = isset($source['store']['timezone']) - ? $source['store']['timezone'] : ''; - $result[UserConfig::KEY_CURRENCY] = isset($source['store']['currency']) - ? $source['store']['currency'] : ''; - $result[InstallCommand::INPUT_KEY_USE_SAMPLE_DATA] = isset($source['store']['useSampleData']) - ? $source['store']['useSampleData'] : ''; - $result[InstallCommand::INPUT_KEY_CLEANUP_DB] = isset($source['store']['cleanUpDatabase']) - ? $source['store']['cleanUpDatabase'] : ''; - return $result; - } - - /** - * Maps data from request to format of admin account model - * - * @return array - * @SuppressWarnings(PHPMD.NPathComplexity) - */ - private function importAdminUserForm() - { - $result = []; - $source = []; - $content = $this->getRequest()->getContent(); - if ($content) { - $source = Json::decode($content, Json::TYPE_ARRAY); - } - $result[AdminAccount::KEY_USER] = isset($source['admin']['username']) ? $source['admin']['username'] : ''; - $result[AdminAccount::KEY_PASSWORD] = isset($source['admin']['password']) ? $source['admin']['password'] : ''; - $result[AdminAccount::KEY_EMAIL] = isset($source['admin']['email']) ? $source['admin']['email'] : ''; - $result[AdminAccount::KEY_FIRST_NAME] = $result[AdminAccount::KEY_USER]; - $result[AdminAccount::KEY_LAST_NAME] = $result[AdminAccount::KEY_USER]; - return $result; - } } diff --git a/setup/src/Magento/Setup/Controller/ValidateAdminCredentials.php b/setup/src/Magento/Setup/Controller/ValidateAdminCredentials.php new file mode 100644 index 0000000000000000000000000000000000000000..6833c1fba0c113c2a503e252fad610b1091a0407 --- /dev/null +++ b/setup/src/Magento/Setup/Controller/ValidateAdminCredentials.php @@ -0,0 +1,61 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Setup\Controller; + +use Magento\Setup\Model\Installer; +use Magento\Setup\Model\RequestDataConverter; +use Magento\Setup\Validator\AdminCredentialsValidator; +use Zend\Json\Json; +use Zend\Mvc\Controller\AbstractActionController; +use Zend\View\Model\JsonModel; + +/** + * Controller for admin credentials validation + */ +class ValidateAdminCredentials extends AbstractActionController +{ + /** + * @var AdminCredentialsValidator + */ + private $adminCredentialsValidator; + + /** + * @var RequestDataConverter + */ + private $requestDataConverter; + + /** + * Initialize dependencies. + * + * @param AdminCredentialsValidator $adminCredentialsValidator + * @param RequestDataConverter $requestDataConverter + */ + public function __construct( + AdminCredentialsValidator $adminCredentialsValidator, + RequestDataConverter $requestDataConverter + ) { + $this->adminCredentialsValidator = $adminCredentialsValidator; + $this->requestDataConverter = $requestDataConverter; + } + + /** + * Validate admin credentials. + * + * @return JsonModel + */ + public function indexAction() + { + try { + $content = $this->getRequest()->getContent(); + $source = $content ? $source = Json::decode($content, Json::TYPE_ARRAY) : []; + $data = $this->requestDataConverter->convert($source); + $this->adminCredentialsValidator->validate($data); + return new JsonModel(['success' => true]); + } catch (\Exception $e) { + return new JsonModel(['success' => false, 'error' => $e->getMessage()]); + } + } +} diff --git a/setup/src/Magento/Setup/Model/AdminAccount.php b/setup/src/Magento/Setup/Model/AdminAccount.php index cd9362f8a0d47fc90574256fbbf955211b6d19e3..6605052cede1e88e4009dbf08349b5845e60e660 100644 --- a/setup/src/Magento/Setup/Model/AdminAccount.php +++ b/setup/src/Magento/Setup/Model/AdminAccount.php @@ -137,22 +137,22 @@ class AdminAccount * @return void * @throws \Exception If the username and email do not both match data provided to install */ - private function validateUserMatches($username, $email) + public function validateUserMatches($username, $email) { if ((strcasecmp($email, $this->data[self::KEY_EMAIL]) == 0) && (strcasecmp($username, $this->data[self::KEY_USER]) != 0)) { // email matched but username did not throw new \Exception( - 'An existing user has the given email but different username. ' . self::KEY_USER . - ' and ' . self::KEY_EMAIL . ' both need to match an existing user or both be new.' + 'An existing user has the given email but different username. ' + . 'Username and email both need to match an existing user or both be new.' ); } if ((strcasecmp($username, $this->data[self::KEY_USER]) == 0) && (strcasecmp($email, $this->data[self::KEY_EMAIL]) != 0)) { // username matched but email did not throw new \Exception( - 'An existing user has the given username but different email. ' . self::KEY_USER . - ' and ' . self::KEY_EMAIL . ' both need to match an existing user or both be new.' + 'An existing user has the given username but different email. ' + . 'Username and email both need to match an existing user or both be new.' ); } } diff --git a/setup/src/Magento/Setup/Model/RequestDataConverter.php b/setup/src/Magento/Setup/Model/RequestDataConverter.php new file mode 100644 index 0000000000000000000000000000000000000000..bd924c16f3da08b1d7353c0e56659173ec9d2eac --- /dev/null +++ b/setup/src/Magento/Setup/Model/RequestDataConverter.php @@ -0,0 +1,117 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Setup\Model; + +use Magento\Framework\Config\ConfigOptionsListConstants as SetupConfigOptionsList; +use Magento\Backend\Setup\ConfigOptionsList as BackendConfigOptionsList; +use Magento\Setup\Model\StoreConfigurationDataMapper as UserConfig; +use Magento\Setup\Console\Command\InstallCommand; + +/** + * Converter of request data into format compatible with models. + */ +class RequestDataConverter +{ + /** + * Convert request data into format compatible with models. + * + * @param array $source + * @return array + */ + public function convert(array $source) + { + $result = array_merge( + $this->convertDeploymentConfigForm($source), + $this->convertUserConfigForm($source), + $this->convertAdminUserForm($source) + ); + return $result; + } + + /** + * Convert data from request to format of deployment config model + * + * @param array $source + * @return array + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.NPathComplexity) + */ + private function convertDeploymentConfigForm(array $source) + { + $result = []; + $result[SetupConfigOptionsList::INPUT_KEY_DB_HOST] = isset($source['db']['host']) ? $source['db']['host'] : ''; + $result[SetupConfigOptionsList::INPUT_KEY_DB_NAME] = isset($source['db']['name']) ? $source['db']['name'] : ''; + $result[SetupConfigOptionsList::INPUT_KEY_DB_USER] = isset($source['db']['user']) ? $source['db']['user'] : ''; + $result[SetupConfigOptionsList::INPUT_KEY_DB_PASSWORD] = + isset($source['db']['password']) ? $source['db']['password'] : ''; + $result[SetupConfigOptionsList::INPUT_KEY_DB_PREFIX] = + isset($source['db']['tablePrefix']) ? $source['db']['tablePrefix'] : ''; + $result[BackendConfigOptionsList::INPUT_KEY_BACKEND_FRONTNAME] = isset($source['config']['address']['admin']) + ? $source['config']['address']['admin'] : ''; + $result[SetupConfigOptionsList::INPUT_KEY_ENCRYPTION_KEY] = isset($source['config']['encrypt']['key']) + ? $source['config']['encrypt']['key'] : null; + $result[SetupConfigOptionsList::INPUT_KEY_SESSION_SAVE] = isset($source['config']['sessionSave']['type']) + ? $source['config']['sessionSave']['type'] : SetupConfigOptionsList::SESSION_SAVE_FILES; + $result[Installer::ENABLE_MODULES] = isset($source['store']['selectedModules']) + ? implode(',', $source['store']['selectedModules']) : ''; + $result[Installer::DISABLE_MODULES] = isset($source['store']['allModules']) + ? implode(',', array_diff($source['store']['allModules'], $source['store']['selectedModules'])) : ''; + return $result; + } + + /** + * Convert data from request to format of user config model + * + * @param array $source + * @return array + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.NPathComplexity) + */ + private function convertUserConfigForm(array $source) + { + $result = []; + if (isset($source['config']['address']['base_url']) && !empty($source['config']['address']['base_url'])) { + $result[UserConfig::KEY_BASE_URL] = $source['config']['address']['base_url']; + } + $result[UserConfig::KEY_USE_SEF_URL] = isset($source['config']['rewrites']['allowed']) + ? $source['config']['rewrites']['allowed'] : ''; + $result[UserConfig::KEY_IS_SECURE] = isset($source['config']['https']['front']) + ? $source['config']['https']['front'] : ''; + $result[UserConfig::KEY_IS_SECURE_ADMIN] = isset($source['config']['https']['admin']) + ? $source['config']['https']['admin'] : ''; + $result[UserConfig::KEY_BASE_URL_SECURE] = (isset($source['config']['https']['front']) + || isset($source['config']['https']['admin'])) + ? $source['config']['https']['text'] : ''; + $result[UserConfig::KEY_LANGUAGE] = isset($source['store']['language']) + ? $source['store']['language'] : ''; + $result[UserConfig::KEY_TIMEZONE] = isset($source['store']['timezone']) + ? $source['store']['timezone'] : ''; + $result[UserConfig::KEY_CURRENCY] = isset($source['store']['currency']) + ? $source['store']['currency'] : ''; + $result[InstallCommand::INPUT_KEY_USE_SAMPLE_DATA] = isset($source['store']['useSampleData']) + ? $source['store']['useSampleData'] : ''; + $result[InstallCommand::INPUT_KEY_CLEANUP_DB] = isset($source['store']['cleanUpDatabase']) + ? $source['store']['cleanUpDatabase'] : ''; + return $result; + } + + /** + * Convert data from request to format of admin account model + * + * @param array $source + * @return array + */ + private function convertAdminUserForm(array $source) + { + $result = []; + $result[AdminAccount::KEY_USER] = isset($source['admin']['username']) ? $source['admin']['username'] : ''; + $result[AdminAccount::KEY_PASSWORD] = isset($source['admin']['password']) ? $source['admin']['password'] : ''; + $result[AdminAccount::KEY_EMAIL] = isset($source['admin']['email']) ? $source['admin']['email'] : ''; + $result[AdminAccount::KEY_FIRST_NAME] = $result[AdminAccount::KEY_USER]; + $result[AdminAccount::KEY_LAST_NAME] = $result[AdminAccount::KEY_USER]; + return $result; + } +} diff --git a/setup/src/Magento/Setup/Test/Unit/Controller/InstallTest.php b/setup/src/Magento/Setup/Test/Unit/Controller/InstallTest.php index 121621075a138ff1fd0e91588606315b5f378df1..55666ffef059c1b4b89e23acc92e2426840a895e 100644 --- a/setup/src/Magento/Setup/Test/Unit/Controller/InstallTest.php +++ b/setup/src/Magento/Setup/Test/Unit/Controller/InstallTest.php @@ -7,6 +7,7 @@ namespace Magento\Setup\Test\Unit\Controller; use \Magento\Setup\Controller\Install; +use Magento\Setup\Model\RequestDataConverter; class InstallTest extends \PHPUnit_Framework_TestCase { @@ -25,6 +26,11 @@ class InstallTest extends \PHPUnit_Framework_TestCase */ private $progressFactory; + /** + * @var \PHPUnit_Framework_MockObject_MockObject|RequestDataConverter + */ + private $requestDataConverter; + /** * @var Install */ @@ -48,6 +54,7 @@ class InstallTest extends \PHPUnit_Framework_TestCase $this->progressFactory = $this->getMock('\Magento\Setup\Model\Installer\ProgressFactory', [], [], '', false); $this->sampleDataState = $this->getMock('\Magento\Framework\Setup\SampleData\State', [], [], '', false); $this->deploymentConfig = $this->getMock('\Magento\Framework\App\DeploymentConfig', [], [], '', false); + $this->requestDataConverter = $this->getMock(RequestDataConverter::class, [], [], '', false); $installerFactory->expects($this->once())->method('create')->with($this->webLogger) ->willReturn($this->installer); @@ -56,7 +63,8 @@ class InstallTest extends \PHPUnit_Framework_TestCase $installerFactory, $this->progressFactory, $this->sampleDataState, - $this->deploymentConfig + $this->deploymentConfig, + $this->requestDataConverter ); } diff --git a/setup/src/Magento/Setup/Validator/AdminCredentialsValidator.php b/setup/src/Magento/Setup/Validator/AdminCredentialsValidator.php new file mode 100644 index 0000000000000000000000000000000000000000..b487e11a63fe191c185f5d35531addcb81e8e720 --- /dev/null +++ b/setup/src/Magento/Setup/Validator/AdminCredentialsValidator.php @@ -0,0 +1,87 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Setup\Validator; + +use Magento\Framework\Config\ConfigOptionsListConstants as ConfigOption; +use Magento\Setup\Model\AdminAccount; +use Magento\Setup\Model\Installer; + +/** + * Admin user credentials validator + */ +class AdminCredentialsValidator +{ + /** + * @var \Magento\Setup\Module\ConnectionFactory + */ + private $connectionFactory; + + /** + * @var \Magento\Setup\Model\AdminAccountFactory + */ + private $adminAccountFactory; + + /** + * @var \Magento\Setup\Module\SetupFactory + */ + private $setupFactory; + + /** + * Initialize dependencies. + * + * @param \Magento\Setup\Model\AdminAccountFactory $adminAccountFactory + * @param \Magento\Setup\Module\ConnectionFactory $connectionFactory + * @param \Magento\Setup\Module\SetupFactory $setupFactory + */ + public function __construct( + \Magento\Setup\Model\AdminAccountFactory $adminAccountFactory, + \Magento\Setup\Module\ConnectionFactory $connectionFactory, + \Magento\Setup\Module\SetupFactory $setupFactory + ) { + $this->connectionFactory = $connectionFactory; + $this->adminAccountFactory = $adminAccountFactory; + $this->setupFactory = $setupFactory; + } + + /** + * Validate admin user name and email. + * + * @param array $data + * @return void + * @throws \Exception + */ + public function validate(array $data) + { + try { + $dbConnection = $this->connectionFactory->create([ + ConfigOption::KEY_NAME => $data[ConfigOption::INPUT_KEY_DB_NAME], + ConfigOption::KEY_HOST => $data[ConfigOption::INPUT_KEY_DB_HOST], + ConfigOption::KEY_USER => $data[ConfigOption::INPUT_KEY_DB_USER], + ConfigOption::KEY_PASSWORD => $data[ConfigOption::INPUT_KEY_DB_PASSWORD], + ConfigOption::KEY_PREFIX => $data[ConfigOption::INPUT_KEY_DB_PREFIX] + ]); + + $userName = $data[AdminAccount::KEY_USER]; + $userEmail = $data[AdminAccount::KEY_EMAIL]; + $userTable = $dbConnection->getTableName('admin_user'); + $result = $dbConnection->fetchRow( + "SELECT user_id, username, email FROM {$userTable} WHERE username = :username OR email = :email", + ['username' => $userName, 'email' => $userEmail] + ); + $setup = $this->setupFactory->create(); + $adminAccount = $this->adminAccountFactory->create( + $setup, + [AdminAccount::KEY_USER => $userName, AdminAccount::KEY_EMAIL => $userEmail] + ); + } catch (\Exception $e) { + return; + } + + if (!empty($result)) { + $adminAccount->validateUserMatches($result['username'], $result['email']); + } + } +} diff --git a/setup/view/magento/setup/create-admin-account.phtml b/setup/view/magento/setup/create-admin-account.phtml index 8c08d127aac656c68c5511a53da8d708529b1277..35c0c911b184cf9e3759eba4e9032cedd73216ff 100644 --- a/setup/view/magento/setup/create-admin-account.phtml +++ b/setup/view/magento/setup/create-admin-account.phtml @@ -29,7 +29,7 @@ $passwordWizard = sprintf( <button type="button" class="btn btn-prime" - ng-click="nextState()" + ng-click="validateCredentials()" ng-disabled="account.$invalid && account.submitted" >Next</button> </div> @@ -41,6 +41,25 @@ $passwordWizard = sprintf( <h2 class="page-sub-title">{{$state.current.header}}</h2> +<div + class="message message-success" + ng-show="validateCredentials.result.success && validateCredentials.pressed" +> + <span class="message-text">Credentials validation successfully passed.</span> +</div> +<div + class="message message-error" + ng-show="validateCredentials.result.success === false && validateCredentials.result !== undefined" +> + <span class="message-text">{{validateCredentials.result.error}}</span> +</div> +<div + class="message message-error" + ng-show="validateCredentials.failed !== undefined" +> + <span class="message-text">{{validateCredentials.failed}}</span> +</div> + <p> Create a new Admin account to manage your store. </p>