Commit desde el servidor

parent 5e455b9d
Pipeline #670 canceled with stages
<?php
namespace App\Http\Controllers;
use App\Consts\AppVersion;
use App\Repositories\InstallerRepository;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class InstallerController extends Controller
{
protected $installer;
public function __construct(InstallerRepository $installer)
{
$this->installer = $installer;
}
public function index(Request $request)
{
if ($request->getSchemeAndHttpHost() . '/' . $request->route()->uri == $request->url()) $sub_directory = 'false';
else $sub_directory = 'true';
return view('vendor.installer.installer', ['sub_directory' => $sub_directory, 'app_version' => AppVersion::VERSION, 'timezones' => json_encode(timezone_identifiers_list()), 'host' => str_replace("install", "", $request->url())]);
}
public function requirements()
{
$phpSupportInfo = $this->installer->checkPHPversion(
config('installer.core.minPhpVersion')
);
$requirements = $this->installer->check(
config('installer.requirements')
);
$html = view('vendor.installer.requirements', compact('requirements', 'phpSupportInfo'))->render();
$status = false;
if (!isset($requirements['errors']) && $phpSupportInfo['supported']) {
$status = true;
}
return response()->json(['html' => $html, 'status' => $status]);
}
public function permissions()
{
$permissions = $this->installer->checkPermission(
config('installer.permissions')
);
$html = view('vendor.installer.permissions', compact('permissions'))->render();
$status = false;
if (!isset($permissions['errors'])) $status = true;
return response()->json(['html' => $html, 'status' => $status]);
}
public function environmentWizard()
{
$envConfig = $this->installer->getEnvContent();
return view('vendor.installer.environment-wizard', compact('envConfig'));
}
public function saveWizard(Request $request)
{
$data = $request->all();
$rules = config('installer.environment.form.rules');
try {
$request->validate($rules);
$this->validateCustomerData($data['customer_details']);
$app_url = str_replace("environment/save", "", $request->url());
$res = $this->installer->saveFileWizard($request->all(), $app_url);
$data['customer_details']['host'] = $app_url;
$same_directory = false;
if ($request->getSchemeAndHttpHost() . '/' . $request->route()->uri == $request->url()) $same_directory = true;
if ($res['results']) {
$outputLog = $this->installer->migrateAndSeed();
if ($outputLog['message'] == 'error') return response()->json(['status_code' => 500, 'errors' => $outputLog['status']]);
$final = $this->installer->finish($same_directory, $data['customer_details'], $data['app_timezone']);
} else return response()->json(['status_code' => 500, 'errors' => $res['message']]);
} catch (\Exception $e) {
if ($e instanceof \Illuminate\Validation\ValidationException) {
$errors = $e->errors();
return response()->json(['status_code' => 422, 'errors' => $errors,]);
}
return response()->json(['status_code' => 500, 'errors' => 'something went wrong']);
}
return response()->json(['status_code' => 200, 'dbOutputLog' => $outputLog['dbOutputLog'], 'final' => $final]);
}
public function testDBConnection(Request $request)
{
try {
$request->validate([
'database_connection' => 'required',
'database_hostname' => 'required',
'database_port' => 'required',
'database_name' => 'required',
'database_user_name' => 'required',
'database_password' => 'nullable'
]);
$database = config('database.connections.' . $request->database_connection);
$database["host"] = $request->database_hostname;
$database["port"] = $request->database_port;
$database["database"] = $request->database_name;
$database["username"] = $request->database_user_name;
$database["password"] = $request->database_password;
config(['database.connections.test_connection' => $database]);
DB::connection('test_connection')->getPdo();
} catch (\Exception $e) {
if ($e instanceof \Illuminate\Validation\ValidationException) {
$errors = $e->errors();
return response()->json(['status_code' => 422, 'errors' => $errors, 'message' => 'something went wrong']);
}
return response()->json(['status_code' => 500, 'errors' => null, 'message' => 'connection does not exists']);
}
return response()->json(['status_code' => 200, 'data' => null, 'message' => 'success']);
}
public function validateCustomerData($data)
{
validator($data, [
'purchase_code' => 'bail|required',
'name' => 'bail|required',
'company_name' => 'bail|required',
'email' => 'email|bail|required',
'phone' => 'bail|required',
'city' => 'bail|required',
'country' => 'bail|required',
'username' => 'bail|required',
])->validate();
}
}
This diff is collapsed.
<?php
return [
/*
|--------------------------------------------------------------------------
| Server Requirements
|--------------------------------------------------------------------------
|
| This is the default Laravel server requirements, you can add as many
| as your application require, we check if the extension is enabled
| by looping through the array and run "extension_loaded" on it.
|
*/
'core' => [
'minPhpVersion' => '7.3.0',
],
'final' => [
'key' => true,
'publish' => false,
],
'requirements' => [
'php' => [
'openssl',
'pdo',
'mbstring',
'tokenizer',
'JSON',
'cURL',
'bcmath',
'ctype',
'fileinfo',
'xml',
],
'apache' => [
'mod_rewrite',
],
],
/*
|--------------------------------------------------------------------------
| Folders Permissions
|--------------------------------------------------------------------------
|
| This is the default Laravel folders permissions, if your application
| requires more permissions just add them to the array list bellow.
|
*/
'permissions' => [
'storage/framework/' => '775',
'storage/app/' => '775',
'storage/logs/' => '775',
'bootstrap/cache/' => '775',
],
/*
|--------------------------------------------------------------------------
| Environment Form Wizard Validation Rules & Messages
|--------------------------------------------------------------------------
|
| This are the default form field validation rules. Available Rules:
| https://laravel.com/docs/5.4/validation#available-validation-rules
|
*/
'environment' => [
'form' => [
'rules' => [
'app_name' => 'required|string|max:50',
'database_connection' => 'required|string|max:50',
'database_hostname' => 'required|string|max:50',
'database_port' => 'required|numeric',
'database_name' => 'required|string|max:50',
'database_username' => 'required|string|max:50',
'database_password' => 'nullable|string|max:50',
'customer_details' => 'required',
'app_timezone' => 'required'
],
],
],
/*
|--------------------------------------------------------------------------
| Installed Middleware Options
|--------------------------------------------------------------------------
| Different available status switch configuration for the
| canInstall middleware located in `canInstall.php`.
|
*/
'installed' => [
'redirectOptions' => [
'route' => [
'name' => 'welcome',
'data' => [],
],
'abort' => [
'type' => '404',
],
'dump' => [
'data' => 'Dumping a not found message.',
],
],
],
/*
|--------------------------------------------------------------------------
| Selected Installed Middleware Option
|--------------------------------------------------------------------------
| The selected option fo what happens when an installer instance has been
| Default output is to `/resources/views/error/404.blade.php` if none.
| The available middleware options include:
| route, abort, dump, 404, default, ''
|
*/
'installedAlreadyAction' => '',
/*
|--------------------------------------------------------------------------
| Updater Enabled
|--------------------------------------------------------------------------
| Can the application run the '/update' route with the migrations.
| The default option is set to False if none is present.
| Boolean value
|
*/
'updaterEnabled' => 'true',
];
<?php <?php
use App\Http\Controllers\InstallerController;
use Illuminate\Support\Facades\Route;
Route::get('/install', [InstallerController::class, 'index'])->name('install');
Route::get('/requirements', [InstallerController::class, 'requirements'])->name('requirements');
Route::get('/permissions', [InstallerController::class, 'permissions'])->name('permissions');
Route::get('/environment', [InstallerController::class, 'environmentWizard'])->name('environment');
Route::post('/test-connection', [InstallerController::class, 'testDBConnection'])->name('test-connection');
Route::post('/environment/save', [InstallerController::class, 'saveWizard'])->name('set-env');
*
!public/
!.gitignore
compiled.php
config.php
down
events.scanned.php
maintenance.php
routes.php
routes.scanned.php
schedule-*
services.json
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment