add domain verify feature

This commit is contained in:
Raish
2021-06-24 07:28:35 +00:00
committed by Mohit Panjwani
parent 31481739f1
commit 87667be90c
11 changed files with 213 additions and 283 deletions

View File

@ -77,14 +77,6 @@ class DatabaseConfigurationController extends Controller
break;
case 'sqlsrv':
$databaseData = [
'driver' => 'sqlsrv',
'host' => '127.0.0.1',
'port' => 1433,
];
break;
}

View File

@ -28,9 +28,10 @@ class RequirementsController extends Controller
*/
public function requirements()
{
$phpSupportInfo = $this->requirements->checkPHPversion(
$phpSupportInfo = $this->requirements->checkPHPVersion(
config('installer.core.minPhpVersion')
);
$requirements = $this->requirements->check(
config('installer.requirements')
);

View File

@ -78,6 +78,15 @@ class EnvironmentManager
try {
$this->checkDatabaseConnection($request);
$requirement = $this->checkVersionRequirements($request);
if ($requirement) {
return [
'error' => 'minimum_version_requirement',
'requirement' => $requirement,
];
}
if (\Schema::hasTable('users')) {
return [
'error' => 'database_should_be_empty',
@ -134,6 +143,7 @@ class EnvironmentManager
{
$connection = $request->database_connection;
$settings = config("database.connections.$connection");
$settings = config("database.connections.$connection");
$connectionArray = array_merge($settings, [
@ -161,6 +171,60 @@ class EnvironmentManager
return DB::connection()->getPdo();
}
/**
*
* @param DatabaseEnvironmentRequest $request
* @return bool
*/
private function checkVersionRequirements(DatabaseEnvironmentRequest $request)
{
$connection = $request->database_connection;
$checker = new RequirementsChecker();
$phpSupportInfo = $checker->checkPHPVersion(
config('crater.min_php_version')
);
if (! $phpSupportInfo['supported']) {
return $phpSupportInfo;
}
$dbSupportInfo = [];
switch ($connection) {
case 'mysql':
$dbSupportInfo = $checker->checkMysqlVersion(
config('crater.min_mysql_version')
);
break;
case 'pgsql':
$conn = pg_connect("host={$request->database_hostname} port={$request->database_port} dbname={$request->database_name} user={$request->database_username} password={$request->database_password}");
$dbSupportInfo = $checker->checkPgsqlVersion(
$conn,
config('crater.min_pgsql_version')
);
break;
case 'sqlite':
$dbSupportInfo = $checker->checkSqliteVersion(
config('crater.min_sqlite_version')
);
break;
}
if (! $dbSupportInfo['supported']) {
return $dbSupportInfo;
}
return false;
}
/**
* Save the mail content to the .env file.
*

View File

@ -2,6 +2,8 @@
namespace Crater\Space;
use SQLite3;
class RequirementsChecker
{
/**
@ -63,7 +65,7 @@ class RequirementsChecker
*
* @return array
*/
public function checkPHPversion(string $minPhpVersion = null)
public function checkPHPVersion(string $minPhpVersion = null)
{
$minVersionPhp = $minPhpVersion;
$currentPhpVersion = $this->getPhpVersionInfo();
@ -113,4 +115,112 @@ class RequirementsChecker
{
return $this->_minPhpVersion;
}
/**
* Check PHP version requirement.
*
* @return array
*/
public function checkMysqlVersion(string $minMysqlVersion = null)
{
$minVersionMysql = $minMysqlVersion;
$currentMysqlVersion = $this->getMysqlVersionInfo();
$supported = false;
if (version_compare($currentMysqlVersion, $minVersionMysql) >= 0) {
$supported = true;
}
$phpStatus = [
'current' => $currentMysqlVersion,
'minimum' => $minVersionMysql,
'supported' => $supported,
];
return $phpStatus;
}
/**
* Get current Mysql version information.
*
* @return string
*/
private static function getMysqlVersionInfo()
{
$currentVersion = explode(' ', mysqli_get_client_info());
return $currentVersion[1];
}
/**
* Check Sqlite version requirement.
*
* @return array
*/
public function checkSqliteVersion(string $minSqliteVersion = null)
{
$minVersionSqlite = $minSqliteVersion;
$currentSqliteVersion = $this->getSqliteVersionInfo();
$supported = false;
if (version_compare($currentSqliteVersion, $minVersionSqlite) >= 0) {
$supported = true;
}
$phpStatus = [
'current' => $currentSqliteVersion,
'minimum' => $minVersionSqlite,
'supported' => $supported,
];
return $phpStatus;
}
/**
* Get current Sqlite version information.
*
* @return string
*/
private static function getSqliteVersionInfo()
{
$currentVersion = SQLite3::version();
return $currentVersion['versionString'];
}
/**
* Check Pgsql version requirement.
*
* @return array
*/
public function checkPgsqlVersion($conn, string $minPgsqlVersion = null)
{
$minVersionPgsql = $minPgsqlVersion;
$currentPgsqlVersion = $this->getPgsqlVersionInfo($conn);
$supported = false;
if (version_compare($currentPgsqlVersion, $minVersionPgsql) >= 0) {
$supported = true;
}
$phpStatus = [
'current' => $currentPgsqlVersion,
'minimum' => $minVersionPgsql,
'supported' => $supported,
];
return $phpStatus;
}
/**
* Get current Pgsql version information.
*
* @return string
*/
private static function getPgsqlVersionInfo($conn)
{
$currentVersion = pg_version($conn);
return $currentVersion['server'];
}
}