diff --git a/app/modules/web/Controllers/ErrorController.php b/app/modules/web/Controllers/ErrorController.php
index bf9aff5d..a9bda0d9 100644
--- a/app/modules/web/Controllers/ErrorController.php
+++ b/app/modules/web/Controllers/ErrorController.php
@@ -26,8 +26,8 @@ namespace SP\Modules\Web\Controllers;
use Klein\Klein;
use SP\Bootstrap;
-use SP\Core\Install\Installer;
use SP\Mvc\View\Template;
+use SP\Services\Install\Installer;
use SP\Util\Util;
/**
diff --git a/app/modules/web/Controllers/Helpers/LayoutHelper.php b/app/modules/web/Controllers/Helpers/LayoutHelper.php
index d0f14d86..a7087b85 100644
--- a/app/modules/web/Controllers/Helpers/LayoutHelper.php
+++ b/app/modules/web/Controllers/Helpers/LayoutHelper.php
@@ -30,12 +30,12 @@ use SP\Core\Acl\ActionsInterface;
use SP\Core\Crypt\CryptPKI;
use SP\Core\Dic\ContainerException;
use SP\Core\Exceptions\SPException;
-use SP\Core\Install\Installer;
use SP\Core\Language;
use SP\Core\Plugin\PluginUtil;
use SP\Core\UI\Theme;
use SP\Core\UI\ThemeInterface;
use SP\Html\DataGrid\DataGridAction;
+use SP\Services\Install\Installer;
use SP\Util\Checks;
use SP\Util\Util;
diff --git a/app/modules/web/Controllers/InstallController.php b/app/modules/web/Controllers/InstallController.php
index d945af1d..4f6325c6 100644
--- a/app/modules/web/Controllers/InstallController.php
+++ b/app/modules/web/Controllers/InstallController.php
@@ -27,14 +27,14 @@ namespace SP\Modules\Web\Controllers;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use SP\Core\Exceptions\SPException;
-use SP\Core\Install\Installer;
use SP\Core\Language;
-use SP\DataModel\InstallData;
use SP\Http\JsonResponse;
use SP\Http\Request;
use SP\Modules\Web\Controllers\Helpers\LayoutHelper;
use SP\Modules\Web\Controllers\Traits\JsonTrait;
use SP\Mvc\View\Components\SelectItemAdapter;
+use SP\Services\Install\InstallData;
+use SP\Services\Install\Installer;
use SP\Util\Checks;
/**
@@ -118,7 +118,7 @@ class InstallController extends ControllerBase
$installData->setHostingMode(Request::analyzeBool('hostingmode', false));
try {
- Installer::run($installData);
+ $this->dic->get(Installer::class)->run($installData);
$this->returnJsonResponse(JsonResponse::JSON_SUCCESS_STICKY, __u('Instalación finalizada'));
} catch (\Exception $e) {
diff --git a/app/modules/web/themes/material-blue/views/config/info.inc b/app/modules/web/themes/material-blue/views/config/info.inc
index a982d1f6..d20b8960 100644
--- a/app/modules/web/themes/material-blue/views/config/info.inc
+++ b/app/modules/web/themes/material-blue/views/config/info.inc
@@ -10,7 +10,7 @@
diff --git a/app/modules/web/themes/material-blue/views/install/index.inc b/app/modules/web/themes/material-blue/views/install/index.inc
index d061146e..5dda5a68 100644
--- a/app/modules/web/themes/material-blue/views/install/index.inc
+++ b/app/modules/web/themes/material-blue/views/install/index.inc
@@ -1,7 +1,6 @@
diff --git a/lib/SP/Core/Install/DatabaseSetupInterface.php b/lib/SP/Services/Install/DatabaseSetupInterface.php
similarity index 96%
rename from lib/SP/Core/Install/DatabaseSetupInterface.php
rename to lib/SP/Services/Install/DatabaseSetupInterface.php
index a34fb36c..ce839fae 100644
--- a/lib/SP/Core/Install/DatabaseSetupInterface.php
+++ b/lib/SP/Services/Install/DatabaseSetupInterface.php
@@ -22,12 +22,12 @@
* along with sysPass. If not, see .
*/
-namespace SP\Core\Install;
+namespace SP\Services\Install;
/**
* Interface DatabaseInterface
*
- * @package SP\Core\Install
+ * @package SP\Services\Install
*/
interface DatabaseSetupInterface
{
diff --git a/lib/SP/DataModel/InstallData.php b/lib/SP/Services/Install/InstallData.php
similarity index 99%
rename from lib/SP/DataModel/InstallData.php
rename to lib/SP/Services/Install/InstallData.php
index c601e108..58ddb6ed 100644
--- a/lib/SP/DataModel/InstallData.php
+++ b/lib/SP/Services/Install/InstallData.php
@@ -22,7 +22,7 @@
* along with sysPass. If not, see .
*/
-namespace SP\DataModel;
+namespace SP\Services\Install;
/**
* Class InstallData
diff --git a/lib/SP/Core/Install/Installer.php b/lib/SP/Services/Install/Installer.php
similarity index 80%
rename from lib/SP/Core/Install/Installer.php
rename to lib/SP/Services/Install/Installer.php
index bb3d6004..0991d136 100644
--- a/lib/SP/Core/Install/Installer.php
+++ b/lib/SP/Services/Install/Installer.php
@@ -3,8 +3,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.
@@ -23,20 +23,19 @@
* along with sysPass. If not, see .
*/
-namespace SP\Core\Install;
+namespace SP\Services\Install;
-use SP\Config\Config;
use SP\Config\ConfigData;
use SP\Core\Crypt\Hash;
use SP\Core\Dic;
use SP\Core\Exceptions\InvalidArgumentException;
use SP\Core\Exceptions\SPException;
-use SP\DataModel\InstallData;
use SP\DataModel\ProfileData;
use SP\DataModel\UserData;
use SP\DataModel\UserGroupData;
use SP\DataModel\UserProfileData;
use SP\Services\Config\ConfigService;
+use SP\Services\Service;
use SP\Services\User\UserService;
use SP\Services\UserGroup\UserGroupService;
use SP\Services\UserProfile\UserProfileService;
@@ -48,7 +47,7 @@ defined('APP_ROOT') || die();
/**
* Esta clase es la encargada de instalar sysPass.
*/
-class Installer
+class Installer extends Service
{
use Dic\InjectableTrait;
@@ -59,34 +58,14 @@ class Installer
const VERSION_TEXT = '3.0-dev';
const BUILD = 18031401;
- /**
- * @var Config
- */
- protected $config;
/**
* @var ConfigService
*/
protected $configService;
- /**
- * @var UserService
- */
- protected $userService;
- /**
- * @var UserGroupService
- */
- protected $userGroupService;
- /**
- * @var UserProfileService
- */
- protected $userProfileService;
/**
* @var DatabaseSetupInterface
*/
protected $dbs;
- /**
- * @var DatabaseConnectionData $databaseConnectionData
- */
- protected $databaseConnectionData;
/**
* @var InstallData
*/
@@ -96,19 +75,6 @@ class Installer
*/
private $configData;
- /**
- * Installer constructor.
- *
- * @param InstallData $installData
- * @throws Dic\ContainerException
- */
- public function __construct(InstallData $installData)
- {
- $this->injectDependencies();
-
- $this->installData = $installData;
- }
-
/**
* @param InstallData $installData
* @return static
@@ -119,19 +85,20 @@ class Installer
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
*/
- public static function run(InstallData $installData)
+ public function run(InstallData $installData)
{
- $installer = new static($installData);
- $installer->checkData();
- $installer->install();
+ $this->installData = $installData;
- return $installer;
+ $this->checkData();
+ $this->install();
+
+ return $this;
}
/**
* @throws InvalidArgumentException
*/
- public function checkData()
+ private function checkData()
{
if (!$this->installData->getAdminLogin()) {
throw new InvalidArgumentException(
@@ -208,7 +175,7 @@ class Installer
* @throws \SP\Core\Exceptions\ConstraintException
* @throws \SP\Core\Exceptions\QueryException
*/
- public function install()
+ private function install()
{
$this->setupDbHost();
$this->setupConfig();
@@ -272,13 +239,16 @@ class Installer
}
/**
- * @throws Dic\ContainerException
+ * @param string $type
* @throws SPException
- * @todo Select DB type
*/
- private function setupDb()
+ private function setupDb($type = 'mysql')
{
- $this->dbs = new MySQL($this->installData);
+ switch ($type) {
+ case 'mysql':
+ $this->dbs = new MySQL($this->installData, $this->configData);
+ break;
+ }
// Si no es modo hosting se crea un hash para la clave y un usuario con prefijo "sp_" para la DB
if ($this->installData->isHostingMode()) {
@@ -300,7 +270,7 @@ class Installer
private function setupDBConnectionData()
{
// FIXME: ugly!!
- $this->databaseConnectionData->refreshFromConfig($this->configData);
+ $this->dic->get(DatabaseConnectionData::class)->refreshFromConfig($this->configData);
}
/**
@@ -345,15 +315,19 @@ class Installer
$userProfileData->setName('Admin');
$userProfileData->setProfile(new ProfileData());
+ $userService = $this->dic->get(UserService::class);
+ $userGroupService = $this->dic->get(UserGroupService::class);
+ $userProfileService = $this->dic->get(UserProfileService::class);
+
// Datos del usuario
$userData = new UserData();
- $userData->setUserGroupId($this->userGroupService->create($userGroupData));
- $userData->setUserProfileId($this->userProfileService->create($userProfileData));
+ $userData->setUserGroupId($userGroupService->create($userGroupData));
+ $userData->setUserProfileId($userProfileService->create($userProfileData));
$userData->setLogin($this->installData->getAdminLogin());
$userData->setName('sysPass Admin');
$userData->setIsAdminApp(1);
- $this->userService->createWithMasterPass($userData, $this->installData->getAdminPass(), $this->installData->getMasterPassword());
+ $userService->createWithMasterPass($userData, $this->installData->getAdminPass(), $this->installData->getMasterPassword());
// __u('Error al actualizar la clave maestra del usuario "admin"'),
} catch (\Exception $e) {
@@ -370,26 +344,11 @@ class Installer
}
/**
- * @param Config $config
- * @param ConfigService $configService
- * @param UserService $userService
- * @param UserGroupService $userGroupService
- * @param UserProfileService $userProfileService
- * @param DatabaseConnectionData $databaseConnectionData
+ * initialize
*/
- public function inject(Config $config,
- ConfigService $configService,
- UserService $userService,
- UserGroupService $userGroupService,
- UserProfileService $userProfileService,
- DatabaseConnectionData $databaseConnectionData)
+ protected function initialize()
{
- $this->config = $config;
- $this->configData = $config->getConfigData();
- $this->configService = $configService;
- $this->userService = $userService;
- $this->userGroupService = $userGroupService;
- $this->userProfileService = $userProfileService;
- $this->databaseConnectionData = $databaseConnectionData;
+ $this->configData = $this->config->getConfigData();
+ $this->configService = $this->dic->get(ConfigService::class);
}
}
\ No newline at end of file
diff --git a/lib/SP/Core/Install/MySQL.php b/lib/SP/Services/Install/MySQL.php
similarity index 95%
rename from lib/SP/Core/Install/MySQL.php
rename to lib/SP/Services/Install/MySQL.php
index 9dcd93c0..7702f24a 100644
--- a/lib/SP/Core/Install/MySQL.php
+++ b/lib/SP/Services/Install/MySQL.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.
@@ -22,14 +22,11 @@
* along with sysPass. If not, see .
*/
-namespace SP\Core\Install;
+namespace SP\Services\Install;
use PDOException;
-use SP\Config\Config;
use SP\Config\ConfigData;
-use SP\Core\Dic\InjectableTrait;
use SP\Core\Exceptions\SPException;
-use SP\DataModel\InstallData;
use SP\Storage\DatabaseConnectionData;
use SP\Storage\DBUtil;
use SP\Storage\MySQLHandler;
@@ -38,12 +35,10 @@ use SP\Util\Util;
/**
* Class MySQL
*
- * @package SP\Core\Install
+ * @package SP\Services\Install
*/
class MySQL implements DatabaseSetupInterface
{
- use InjectableTrait;
-
/**
* @var InstallData
*/
@@ -61,14 +56,13 @@ class MySQL implements DatabaseSetupInterface
* MySQL constructor.
*
* @param InstallData $installData
+ * @param ConfigData $configData
* @throws SPException
- * @throws \SP\Core\Dic\ContainerException
*/
- public function __construct(InstallData $installData)
+ public function __construct(InstallData $installData, ConfigData $configData)
{
- $this->injectDependencies();
-
$this->installData = $installData;
+ $this->configData = $configData;
$this->connectDatabase();
}
@@ -104,14 +98,6 @@ class MySQL implements DatabaseSetupInterface
}
}
- /**
- * @param Config $config
- */
- public function inject(Config $config)
- {
- $this->configData = $config->getConfigData();
- }
-
/**
* @throws SPException
*/
diff --git a/lib/SP/Util/Util.php b/lib/SP/Util/Util.php
index 57de2f80..38ec4490 100644
--- a/lib/SP/Util/Util.php
+++ b/lib/SP/Util/Util.php
@@ -29,10 +29,10 @@ use Defuse\Crypto\Encoding;
use SP\Bootstrap;
use SP\Config\ConfigData;
use SP\Core\Exceptions\SPException;
-use SP\Core\Install\Installer;
use SP\Html\Html;
use SP\Log\Log;
use SP\Log\LogUtil;
+use SP\Services\Install\Installer;
defined('APP_ROOT') || die();