Update mode
This commit is contained in:
parent
d6a9fcf600
commit
945790bedd
|
@ -48,27 +48,8 @@ $container['view'] = function ($container) use (&$config) {
|
|||
return $view;
|
||||
};
|
||||
|
||||
$app = new App($container);
|
||||
|
||||
$app->get('/', function (Request $request, Response $response) {
|
||||
return $this->view->render($response, 'install.twig');
|
||||
});
|
||||
|
||||
$app->post('/', function (Request $request, Response $response) use (&$config) {
|
||||
$config['base_url'] = $request->getParam('base_url');
|
||||
$config['storage_dir'] = $request->getParam('storage_dir');
|
||||
$config['displayErrorDetails'] = false;
|
||||
$config['db']['connection'] = $request->getParam('connection');
|
||||
$config['db']['dsn'] = $request->getParam('dsn');
|
||||
$config['db']['username'] = $request->getParam('db_user');
|
||||
$config['db']['password'] = $request->getParam('db_password');
|
||||
|
||||
|
||||
file_put_contents(__DIR__ . '/../config.php', '<?php' . PHP_EOL . 'return ' . var_export($config, true) . ';');
|
||||
|
||||
|
||||
DB::setDsn($config['db']['connection'] . ':' . __DIR__ . '/../' . $config['db']['dsn'], $config['db']['username'], $config['db']['password']);
|
||||
|
||||
function migrate($config)
|
||||
{
|
||||
$firstMigrate = false;
|
||||
if (!file_exists(__DIR__ . '/../' . $config['db']['dsn']) && DB::driver() === 'sqlite') {
|
||||
touch(__DIR__ . '/../' . $config['db']['dsn']);
|
||||
|
@ -105,7 +86,7 @@ $app->post('/', function (Request $request, Response $response) use (&$config) {
|
|||
if (basename($file) === $migration->name && $migration->migrated) {
|
||||
$continue = true;
|
||||
break;
|
||||
} elseif (basename($file) === $migration->name && !$migration->migrated) {
|
||||
} else if (basename($file) === $migration->name && !$migration->migrated) {
|
||||
$exists = true;
|
||||
break;
|
||||
}
|
||||
|
@ -127,9 +108,51 @@ $app->post('/', function (Request $request, Response $response) use (&$config) {
|
|||
throw $exception;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function cleanDir($path)
|
||||
{
|
||||
$directoryIterator = new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS);
|
||||
$iteratorIterator = new RecursiveIteratorIterator($directoryIterator, RecursiveIteratorIterator::CHILD_FIRST);
|
||||
foreach ($iteratorIterator as $file) {
|
||||
if ($file->getFilename() !== '.gitkeep') {
|
||||
$file->isDir() ? rmdir($file) : unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$app = new App($container);
|
||||
|
||||
$app->get('/', function (Request $request, Response $response) {
|
||||
|
||||
$installed = file_exists(__DIR__ . '/../config.php');
|
||||
|
||||
return $this->view->render($response, 'install.twig', ['installed' => $installed]);
|
||||
});
|
||||
|
||||
$app->post('/', function (Request $request, Response $response) use (&$config) {
|
||||
if (!file_exists(__DIR__ . '/../config.php')) {
|
||||
$config['base_url'] = $request->getParam('base_url');
|
||||
$config['storage_dir'] = $request->getParam('storage_dir');
|
||||
$config['displayErrorDetails'] = false;
|
||||
$config['db']['connection'] = $request->getParam('connection');
|
||||
$config['db']['dsn'] = $request->getParam('dsn');
|
||||
$config['db']['username'] = $request->getParam('db_user');
|
||||
$config['db']['password'] = $request->getParam('db_password');
|
||||
|
||||
|
||||
file_put_contents(__DIR__ . '/../config.php', '<?php' . PHP_EOL . 'return ' . var_export($config, true) . ';');
|
||||
}
|
||||
|
||||
DB::setDsn($config['db']['connection'] . ':' . __DIR__ . '/../' . $config['db']['dsn'], $config['db']['username'], $config['db']['password']);
|
||||
|
||||
migrate($config);
|
||||
|
||||
DB::query("INSERT INTO `users` (`email`, `username`, `password`, `is_admin`, `user_code`) VALUES (?, 'admin', ?, 1, ?)", [$request->getParam('email'), password_hash($request->getParam('password'), PASSWORD_DEFAULT), substr(md5(microtime()), rand(0, 26), 5)]);
|
||||
|
||||
cleanDir(__DIR__ . '/../resources/cache');
|
||||
cleanDir(__DIR__ . '/../resources/sessions');
|
||||
|
||||
return $response->withRedirect('../?afterInstall=true');
|
||||
});
|
||||
|
||||
|
|
|
@ -47,80 +47,93 @@
|
|||
<div class="card-header">Install XBackBone</div>
|
||||
<div class="card-body">
|
||||
<form method="post" action="">
|
||||
{% if not installed %}
|
||||
<div class="form-group row">
|
||||
<label for="base_url" class="col-sm-3 col-form-label">Base URL</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="base_url" name="base_url"
|
||||
value="{{ config.base_url }}" autocomplete="off" required>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group row">
|
||||
<label for="connection" class="col-sm-3 col-form-label">SQL Engine</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="connection" id="connection" required class="form-control">
|
||||
<option value="sqlite" selected>SQLite</option>
|
||||
<option value="mysql">MySQL</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="base_url" class="col-sm-3 col-form-label">Base URL</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="base_url" name="base_url"
|
||||
value="{{ config.base_url }}" autocomplete="off" required>
|
||||
<div class="form-group row">
|
||||
<label for="dsn" class="col-sm-3 col-form-label">Database Source Name (DSN)</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="dsn" name="dsn"
|
||||
value="{{ config.db.dsn }}"
|
||||
autocomplete="off" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group row">
|
||||
<label for="connection" class="col-sm-3 col-form-label">SQL Engine</label>
|
||||
<div class="col-sm-9">
|
||||
<select name="connection" id="connection" required class="form-control">
|
||||
<option value="sqlite" selected>SQLite</option>
|
||||
<option value="mysql">MySQL</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="dsn" class="col-sm-3 col-form-label">Database Source Name (DSN)</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="dsn" name="dsn" value="{{ config.db.dsn }}"
|
||||
autocomplete="off" required>
|
||||
<div class="form-group row">
|
||||
<label for="db_user" class="col-sm-3 col-form-label">Database Username</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="db_user" name="db_user"
|
||||
autocomplete="off"
|
||||
disabled>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="db_user" class="col-sm-3 col-form-label">Database Username</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="db_user" name="db_user" autocomplete="off" disabled>
|
||||
<div class="form-group row">
|
||||
<label for="db_password" class="col-sm-3 col-form-label">Database Password</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" class="form-control" id="db_password" name="db_password"
|
||||
autocomplete="off" disabled>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group row">
|
||||
<label for="storage_dir" class="col-sm-3 col-form-label">Storage Directory</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="storage_dir" name="storage_dir"
|
||||
value="{{ config.storage_dir }}" autocomplete="off" required>
|
||||
<small>Must be a writable directory</small>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group row">
|
||||
<label for="email" class="col-sm-3 col-form-label">Admin email</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="email" class="form-control" id="email" placeholder="email@example.com"
|
||||
name="email" autocomplete="off" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="db_password" class="col-sm-3 col-form-label">Database Password</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" class="form-control" id="db_password" name="db_password"
|
||||
autocomplete="off" disabled>
|
||||
<div class="form-group row">
|
||||
<label for="password" class="col-sm-3 col-form-label">Admin password</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" class="form-control" id="password" placeholder="Password"
|
||||
name="password" autocomplete="off" required>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group row">
|
||||
<label for="storage_dir" class="col-sm-3 col-form-label">Storage Directory</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" class="form-control" id="storage_dir" name="storage_dir"
|
||||
value="{{ config.storage_dir }}" autocomplete="off" required>
|
||||
<small>Must be a writable directory</small>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group row">
|
||||
<label for="email" class="col-sm-3 col-form-label">Admin email</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="email" class="form-control" id="email" placeholder="email@example.com"
|
||||
name="email" autocomplete="off" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label for="password" class="col-sm-3 col-form-label">Admin password</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" class="form-control" id="password" placeholder="Password"
|
||||
name="password" autocomplete="off" required>
|
||||
<div class="form-group row justify-content-md-end">
|
||||
<div class="col-sm-9">
|
||||
<button type="submit" class="btn btn-outline-success">
|
||||
<i class="fas fa-save fa-fw"></i> Configure & Install
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row justify-content-md-end">
|
||||
<div class="col-sm-9">
|
||||
<button type="submit" class="btn btn-outline-success">
|
||||
<i class="fas fa-save fa-fw"></i> Configure & Install
|
||||
</button>
|
||||
{% else %}
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-12 d-flex justify-content-center">
|
||||
<button type="submit" class="btn btn-lg btn-outline-primary">
|
||||
<i class="fas fa-sync fa-fw"></i> Update database
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue