You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
5.9 KiB
186 lines
5.9 KiB
2 years ago
|
<?php
|
||
|
|
||
|
namespace App\Http\Controllers;
|
||
|
|
||
|
use App\CentralLogics\Helpers;
|
||
|
use App\Traits\ActivationClass;
|
||
|
use Illuminate\Http\Request;
|
||
|
use Illuminate\Support\Facades\Artisan;
|
||
|
use Illuminate\Support\Facades\DB;
|
||
|
use Illuminate\Support\Facades\URL;
|
||
|
|
||
|
class InstallController extends Controller
|
||
|
{
|
||
|
use ActivationClass;
|
||
|
|
||
|
public function step0()
|
||
|
{
|
||
|
return view('installation.step0');
|
||
|
}
|
||
|
|
||
|
public function step1()
|
||
|
{
|
||
|
$permission['curl_enabled'] = function_exists('curl_version');
|
||
|
$permission['db_file_write_perm'] = is_writable(base_path('.env'));
|
||
|
$permission['routes_file_write_perm'] = is_writable(base_path('app/Providers/RouteServiceProvider.php'));
|
||
|
return view('installation.step1', compact('permission'));
|
||
|
}
|
||
|
|
||
|
public function step2()
|
||
|
{
|
||
|
return view('installation.step2');
|
||
|
}
|
||
|
|
||
|
public function step3()
|
||
|
{
|
||
|
return view('installation.step3');
|
||
|
}
|
||
|
|
||
|
public function step4()
|
||
|
{
|
||
|
return view('installation.step4');
|
||
|
}
|
||
|
|
||
|
public function step5()
|
||
|
{
|
||
|
return view('installation.step5');
|
||
|
}
|
||
|
|
||
|
public function purchase_code(Request $request)
|
||
|
{
|
||
|
Helpers::setEnvironmentValue('SOFTWARE_ID', 'MzM1NzE3NTA=');
|
||
|
Helpers::setEnvironmentValue('BUYER_USERNAME', $request['username']);
|
||
|
Helpers::setEnvironmentValue('PURCHASE_CODE', $request['purchase_key']);
|
||
|
// return redirect()->route('dmvf', ['purchase_key' => $request['purchase_key'], 'username' => $request['username']]);
|
||
|
$post = [
|
||
|
'name' => $request['name'],
|
||
|
'email' => $request['email'],
|
||
|
'username' => $request['username'],
|
||
|
'purchase_key' => $request['purchase_key'],
|
||
|
'domain' => preg_replace("#^[^:/.]*[:/]+#i", "", url('/')),
|
||
|
];
|
||
|
$response = $this->dmvf($post);
|
||
|
return redirect($response);
|
||
|
|
||
|
}
|
||
|
|
||
|
public function system_settings(Request $request)
|
||
|
{
|
||
|
DB::table('admins')->insertOrIgnore([
|
||
|
'f_name' => $request['f_name'],
|
||
|
'l_name' => $request['l_name'],
|
||
|
'email' => $request['email'],
|
||
|
'role_id' => 1,
|
||
|
'password' => bcrypt($request['password']),
|
||
|
'phone' => $request['phone'],
|
||
|
'created_at' => now(),
|
||
|
'updated_at' => now()
|
||
|
]);
|
||
|
|
||
|
DB::table('business_settings')->where(['key' => 'business_name'])->update([
|
||
|
'value' => $request['business_name']
|
||
|
]);
|
||
|
|
||
|
$previousRouteServiceProvier = base_path('app/Providers/RouteServiceProvider.php');
|
||
|
$newRouteServiceProvier = base_path('app/Providers/RouteServiceProvider.txt');
|
||
|
copy($newRouteServiceProvier, $previousRouteServiceProvier);
|
||
|
//sleep(5);
|
||
|
return view('installation.step6');
|
||
|
}
|
||
|
|
||
|
public function database_installation(Request $request)
|
||
|
{
|
||
|
if (self::check_database_connection($request->DB_HOST, $request->DB_DATABASE, $request->DB_USERNAME, $request->DB_PASSWORD)) {
|
||
|
|
||
|
$key = base64_encode(random_bytes(32));
|
||
|
$output = 'APP_NAME=stackfood' . time() .
|
||
|
'APP_ENV=live
|
||
|
APP_KEY=base64:' . $key . '
|
||
|
APP_DEBUG=false
|
||
|
APP_INSTALL=true
|
||
|
APP_LOG_LEVEL=debug
|
||
|
APP_MODE=live
|
||
|
APP_URL=' . URL::to('/') . '
|
||
|
|
||
|
DB_CONNECTION=mysql
|
||
|
DB_HOST=' . $request->DB_HOST . '
|
||
|
DB_PORT=3306
|
||
|
DB_DATABASE=' . $request->DB_DATABASE . '
|
||
|
DB_USERNAME=' . $request->DB_USERNAME . '
|
||
|
DB_PASSWORD=' . $request->DB_PASSWORD . '
|
||
|
|
||
|
BROADCAST_DRIVER=log
|
||
|
CACHE_DRIVER=file
|
||
|
SESSION_DRIVER=file
|
||
|
SESSION_LIFETIME=120
|
||
|
QUEUE_DRIVER=sync
|
||
|
|
||
|
REDIS_HOST=127.0.0.1
|
||
|
REDIS_PASSWORD=null
|
||
|
REDIS_PORT=6379
|
||
|
|
||
|
PUSHER_APP_ID=
|
||
|
PUSHER_APP_KEY=
|
||
|
PUSHER_APP_SECRET=
|
||
|
PUSHER_APP_CLUSTER=mt1
|
||
|
|
||
|
PURCHASE_CODE=' . session('purchase_key') . '
|
||
|
BUYER_USERNAME=' . session('username') . '
|
||
|
SOFTWARE_ID=MzM1NzE3NTA=
|
||
|
|
||
|
SOFTWARE_VERSION=6.2.0
|
||
|
REACT_APP_KEY=43218516
|
||
|
';
|
||
|
$file = fopen(base_path('.env'), 'w');
|
||
|
fwrite($file, $output);
|
||
|
fclose($file);
|
||
|
|
||
|
$path = base_path('.env');
|
||
|
if (file_exists($path)) {
|
||
|
return redirect('step4');
|
||
|
} else {
|
||
|
session()->flash('error', 'Database error!');
|
||
|
return redirect('step3');
|
||
|
}
|
||
|
} else {
|
||
|
session()->flash('error', 'Database error!');
|
||
|
return redirect('step3');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function import_sql()
|
||
|
{
|
||
|
try {
|
||
|
$sql_path = base_path('installation/backup/database.sql');
|
||
|
DB::unprepared(file_get_contents($sql_path));
|
||
|
return redirect('step5');
|
||
|
} catch (\Exception $exception) {
|
||
|
session()->flash('error', 'Your database is not clean, do you want to clean database then import?');
|
||
|
return back();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function force_import_sql()
|
||
|
{
|
||
|
try {
|
||
|
Artisan::call('db:wipe', ['--force' => true]);
|
||
|
$sql_path = base_path('installation/backup/database.sql');
|
||
|
DB::unprepared(file_get_contents($sql_path));
|
||
|
return redirect('step5');
|
||
|
} catch (\Exception $exception) {
|
||
|
session()->flash('error', 'Check your database permission!');
|
||
|
return back();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function check_database_connection($db_host = "", $db_name = "", $db_user = "", $db_pass = "")
|
||
|
{
|
||
|
|
||
|
if (@mysqli_connect($db_host, $db_user, $db_pass, $db_name)) {
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|