-
Posts
17 -
Reputation
2 -
Files
0 -
Rank
Rookie -
Joined
-
Last visited
About Ufuk G
- Birthday 12/13/1987
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
Ufuk G's Achievements
-
resources\installer\src\Controllers/BaseController.php <?php namespace Project\Installer\Controllers; use Exception; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Project\Installer\Helpers\DBHelper; use Illuminate\Support\Facades\Validator; use Project\Installer\Helpers\ErrorHelper; use Project\Installer\Helpers\Helper; use Project\Installer\Helpers\RequirementHelper; use Project\Installer\Helpers\URLHelper; use Project\Installer\Helpers\ValidationHelper; class BaseController extends Controller { public function __construct() { if(!request()->routeIs('project.install.finish') && request()->routeIs('project.install.*')) { if(env("PURCHASE_CODE",'') != "") { return abort(404); } }else if(request()->routeIs('project.install.finish')) { if(DBHelper::step('admin_account' !== "PASSED")) { return abort(404); } } } public function welcomeView(Helper $helper) { cache()->driver('file')->forget($helper->cache_key); $page_title = "Installation - Welcome"; return view('installer.pages.welcome',compact('page_title')); } public function installationProcessCancel() { $page_title = "Installation - Cancel"; return view('installer.pages.cancel',compact('page_title')); } public function requirementsView(ErrorHelper $handleError, RequirementHelper $handleRequirements) { if($handleRequirements->requirementConfigIsInvalid()) { return $handleError->redirectErrorPage(['Failed to open installer configuration file!']); } $requirements = $handleRequirements->getRequirementStatus(); // Get All status $page_title = "Installation - Requirements"; return view('installer.pages.requirements',compact('page_title','requirements')); } public function purchaseValidationForm() { if(RequirementHelper::step() != "PASSED") { return redirect()->route('project.install.requirements'); } $page_title = "Installation - Validation"; return view('installer.pages.validation-form',compact('page_title')); } public function purchaseValidationFormSubmit(Request $request, ErrorHelper $handleError, ValidationHelper $validator, Helper $helper) { $request->validate([ 'username' => 'required|string', 'code' => 'required|string', ]); try{ if($validator->isLocalInstallation()) { $helper->cache($request->all()); $validator->setStepSession(); }else { $validator->validate($request->all()); } }catch(Exception $e) { return $handleError->redirectErrorPage([$e->getMessage()]); } return redirect()->route('project.install.database.config'); } public function databaseConfigView(Helper $helper) { $page_title = "Installation - Database Configuration"; if(RequirementHelper::step() !== "PASSED") return redirect()->route('project.install.requirements'); if(ValidationHelper::step() !== "PASSED") return redirect()->route('project.install.validation.form'); $host_name = request()->host(); if($host_name != "localhost" && $host_name != "127.0.0.1") { $host_name = gethostname(); } return view('installer.pages.database-config',compact('page_title','host_name')); } public function databaseConfigSubmit(Request $request, DBHelper $db, Helper $helper) { $validator = Validator::make($request->all(),[ 'app_name' => 'required|string|max:150', 'host' => 'required|string', 'db_name' => 'required|string|max:100', 'db_user' => 'required|string', 'db_user_password' => 'nullable|string', ]); if($validator->fails()) { return back()->withErrors($validator)->withInput(); } $validated = $validator->validate(); try{ $db->create($validated); }catch(Exception $e) { return back()->with('error',$e->getMessage()); } return redirect()->route('project.install.migration.view'); } public function migrationView(Helper $helper, URLHelper $url) { if(RequirementHelper::step() !== "PASSED") return redirect()->route('project.install.requirements'); if(ValidationHelper::step() !== "PASSED") return redirect()->route('project.install.validation.form'); if(DBHelper::step() !== "PASSED") return redirect()->route('project.install.database.config'); $database_data = DBHelper::getSessionData(); $page_title = "Installation - Database Migration"; return view('installer.pages.migration',compact('page_title','database_data')); } public function migrationSubmit(Request $request, DBHelper $db) { try{ $db->migrate(); }catch(Exception $e) { return back()->with('error',$e->getMessage()); } return redirect()->route('project.install.admin.setup'); } public function accountSetup(Helper $helper) { $page_title = "Installation - Admin account settings"; if(RequirementHelper::step() !== "PASSED") return redirect()->route('project.install.requirements'); if(ValidationHelper::step() !== "PASSED") return redirect()->route('project.install.validation.form'); if(DBHelper::step() !== "PASSED") return redirect()->route('project.install.database.config'); if(DBHelper::step('migrate') !== "PASSED") return redirect()->route('project.install.migration.view'); return view('installer.pages.admin-setup',compact('page_title')); } public function accountUpdate(Request $request, DBHelper $db) { $request->validate([ 'email' => "required|string|email", 'f_name' => "required|string", 'l_name' => "required|string", 'password' => "required|string", ],[ 'email.required' => "Email address is required", 'email.email' => "Email address must be an valid email", 'f_name.required' => "First name is required", 'l_name.required' => "Last name is required", 'password.required' => "Password field is required", ]); try{ $db->updateAccountSettings($request->all()); }catch(Exception $e) { return back()->with('error',$e->getMessage()); } return redirect()->route('project.install.finish'); } public function finish(Helper $helper) { $page_title = "Installation - Finish"; if(RequirementHelper::step() !== "PASSED") return redirect()->route('project.install.requirements'); if(ValidationHelper::step() !== "PASSED") return redirect()->route('project.install.validation.form'); if(DBHelper::step() !== "PASSED") return redirect()->route('project.install.database.config'); if(DBHelper::step('migrate') !== "PASSED") return redirect()->route('project.install.migration.view'); if(DBHelper::step('admin_account' !== "PASSED")) return redirect()->route('project.install.admin.setup'); cache()->driver("file")->forget($helper->cache_key); return view('installer.pages.finish',compact('page_title')); } } resources\installer\src\Helpers/DBHelper.php <?php namespace Project\Installer\Helpers; use Exception; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; use Symfony\Component\Process\Process; class DBHelper { public function create(array $data) { $this->updateEnv([ 'DB_CONNECTION' => "mysql", 'DB_HOST' => $data['host'], 'DB_PORT' =>"3306", 'DB_DATABASE' => $data['db_name'], 'DB_USERNAME' => $data['db_user'], 'DB_PASSWORD' => $data['db_user_password'], ]); $this->setStepSession(); $this->saveDataInSession($data); $helper = new Helper(); $helper->cache($data); } public function updateEnv(array $replace_array) { $array_going_to_modify = $replace_array; if (count($array_going_to_modify) == 0) { return false; } $env_file = App::environmentFilePath(); $env_content = $_ENV; $update_array = ["APP_ENV" => App::environment()]; foreach ($env_content as $key => $value) { foreach ($array_going_to_modify as $modify_key => $modify_value) { if(!array_key_exists($modify_key,$env_content) && !array_key_exists($modify_key,$update_array)) { $update_array[$modify_key] = $this->setEnvValue($modify_key,$modify_value); break; } if ($key == $modify_key) { $update_array[$key] = $this->setEnvValue($key,$modify_value); break; } else { $update_array[$key] = $this->setEnvValue($key,$value); } } } $string_content = ""; foreach ($update_array as $key => $item) { $line = $key . "=" . $item; $string_content .= $line . "\n\r"; } sleep(2); file_put_contents($env_file, $string_content); } public function setEnvValue($key,$value) { if($key == "APP_KEY") { return $value; } return '"'.$value.'"'; } public function saveDataInSession($data) { session()->put('database_config_data',$data); } public static function getSessionData() { return session('database_config_data'); } public function setStepSession() { session()->put("database_config","PASSED"); } public static function step($step = 'database_config') { return session($step); } public function migrate() { self::execute("php artisan migrate:fresh --seed"); self::execute("php artisan migrate"); self::execute("php artisan passport:install"); $this->setMigrateStepSession(); $helper = new Helper(); $data = cache()->driver("file")->get($helper->cache_key); // update env to production $this->updateEnv([ 'APP_ENV' => "production", ]); } public function setMigrateStepSession() { session()->put('migrate','PASSED'); } public function updateAccountSettings(array $data) { $helper = new Helper(); $helper->cache($data); $p_code = $helper->cache()['code'] ?? ""; if($p_code == "") { cache()->driver('file')->forget($helper->cache_key); throw new Exception("Something went wrong! Purchase code registration failed! Please try again"); } $admin = DB::table('admins')->first(); if(!$admin) { DB::table('admins')->insert([ 'firstname' => $data['f_name'], 'lastname' => $data['l_name'], 'password' => password_hash($data['password'],PASSWORD_DEFAULT), 'email' => $data['email'], ]); }else { DB::table("admins")->where('id',$admin->id)->update([ 'firstname' => $data['f_name'], 'lastname' => $data['l_name'], 'password' => password_hash($data['password'],PASSWORD_DEFAULT), 'email' => $data['email'], ]); } $validator = new ValidationHelper(); if($validator->isLocalInstallation() == false) { $helper->connection($helper->cache()); } $client_host = parse_url(url('/'))['host']; $filter_host = preg_replace('/^www\./', '', $client_host); if(Schema::hasTable('script')) { DB::table('script')->truncate(); DB::table('script')->insert([ 'client' => $filter_host, 'signature' => $helper->signature($helper->cache()), ]); } if(Schema::hasTable('basic_settings')) { try{ DB::table('basic_settings')->where('id',1)->update([ 'site_name' => $helper->cache()['app_name'] ?? "", ]); }catch(Exception $e) { //handle error } } $db = new DBHelper(); $db->updateEnv([ 'PURCHASE_CODE' => $p_code, 'APP_MODE' => "live", ]); // $helper->generateAppKey(); $this->setAdminAccountStepSession(); } public function setAdminAccountStepSession() { session()->put('admin_account','PASSED'); } public static function execute($cmd): string { $process = Process::fromShellCommandline($cmd); $processOutput = ''; $captureOutput = function ($type, $line) use (&$processOutput) { $processOutput .= $line; }; $process->setTimeout(null) ->run($captureOutput); if ($process->getExitCode()) { throw new Exception($cmd . " - " . $processOutput); } return $processOutput; } } resources\installer\src\Helpers/ValidationHelper.php <?php namespace Project\Installer\Helpers; use Exception; use Illuminate\Http\Client\RequestException; use Illuminate\Http\Client\Response; use Illuminate\Support\Facades\Http; use Project\Installer\Helpers\Helper; use Project\Installer\Helpers\URLHelper; class ValidationHelper { public function validate(array $data) { $config = new ConfigHelper(); $url = new URLHelper(); $db = new DBHelper(); $helper = new Helper(); $data['client'] = $helper->client(); $helper->connection($data); $helper->cache($data); $this->setStepSession(); } public function setStepSession() { session()->put('validation',"PASSED"); } public static function step() { return session('validation'); } public function isLocalInstallation() { return true; $url = request()->url(); $url_path = parse_url($url); $host = $url_path['host']; if($host == "localhost" || $host == "127.0.0.1") return true; return false; } } 4.5 Full Null İnstall
-
-
-
-
-
Ufuk G changed their profile photo
-