Reacted by:
Only if someone shares the license data.@raz0r possible null it
LINK PROTECTION PASSWORD FOR THIS UPDATE
Date: November 13th, 2024
Version: 2.5.0
Issue Fixes:
-----------
Resolved tenant user profile picture issue
Fixed file upload issue.
Increase php memory_limit and clear cache:
php artisan cache:clearDid you restart apache? Did you clear cache? I have no errors, so i can't reproduce your. But i'm 100% sure it cause because too large unserailized string cannot be read (server side) due limist php/sql.not workingView attachment 50134
<?php
namespace Xgenious\Installer\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Xgenious\Installer\Helpers\InstallationHelper;
use Xgenious\Installer\Helpers\CacheCleaner;
class InstallerController extends Controller
{
// Bỏ qua kiểm tra bản quyền và trả về thông báo thành công
public function index()
{
// Trả về trang cài đặt mà không kiểm tra bản quyền
return view("installer::installer.index");
}
// Bỏ qua kiểm tra bản quyền và tiếp tục cài đặt
public function verifyPurchase(Request $request)
{
return response()->json([
"type" => "success",
"msg" => "Verification skipped. Proceeding with installation.",
]);
}
// Kiểm tra kết nối cơ sở dữ liệu
public function checkDatabase(Request $request)
{
$validation = Validator::make($request->all(), [
"db_name" => "required",
"db_username" => "required",
"db_host" => "required",
"db_password" => "nullable",
]);
if ($validation->fails()) {
return response()->json([
"type" => "danger",
"msg" => "Make sure you have entered all the database details.",
]);
}
$db_connection = InstallationHelper::check_database_connection(
$request->db_host,
$request->db_name,
$request->db_username,
$request->db_password
);
if ($db_connection["status"] === false) {
return response()->json([
"type" => "danger",
"msg" => $db_connection["msg"],
]);
}
// Cảnh báo khi kết nối thành công
return response()->json([
"type" => "success",
"msg" => "Database connection successful.",
]);
}
// Cài đặt hệ thống và sử dụng database.sql nếu đã có
public function install(Request $request)
{
// Kiểm tra tất cả thông tin nhập vào
$validation = Validator::make($request->all(), [
"db_name" => "required",
"db_username" => "required",
"db_host" => "required",
"db_password" => "nullable",
"admin_email" => "required",
"admin_password" => "required",
"admin_username" => "required",
"admin_name" => "required",
]);
if ($validation->fails()) {
return response()->json([
"type" => "danger",
"msg" => "Make sure you have entered all the database and admin information.",
]);
}
// Kiểm tra xem file database.sql có tồn tại hay không
if (!Storage::disk("local")->exists("database.sql")) {
return response()->json([
"type" => "danger",
"msg" => "The database.sql file is missing. Please upload it manually.",
]);
}
// Tạo thông số cho file .env
$keyValuePairs = [
"APP_DEBUG" => "true",
"APP_URL" => trim(url("/"), "/"),
"DB_HOST" => $request->db_host,
"DB_DATABASE" => $request->db_name,
"DB_USERNAME" => $request->db_username,
"DB_PASSWORD" => is_null($request->db_password) ? "" : '"' . $request->db_password . '"',
"BROADCAST_DRIVER" => config("installer.broadcast_driver", "log"),
"CACHE_DRIVER" => config("installer.cache_driver", "file"),
"QUEUE_CONNECTION" => config("installer.queue_connection", "sync"),
"MAIL_PORT" => config("installer.mail_port", "587"),
"MAIL_ENCRYPTION" => config("installer.mail_encryption", "tls"),
];
// Nếu cài đặt multi-tenant, thêm thông tin cấu hình tương ứng
$tenant_msg = "";
if (config("installer.multi_tenant", false)) {
$keyValuePairs["CENTRAL_DOMAIN"] = $request->getHost();
$keyValuePairs["TENANT_DATABASE_PREFIX"] = \Str::kebab(config("installer.app_name", "multitenant")) . "_tenant_db_";
$tenant_msg = 'Do not forget to set up wildcard subdomain for automatic subdomain creation. <a target="_blank" href="https://docs.xgenious.com/docs/nazmart-multi-tenancy-ecommerce-platform-saas/wildcard-subdomain-configuration/"><i class="las la-external-link-alt"></i></a>';
}
// Tạo file .env
InstallationHelper::generate_env_file($keyValuePairs);
// Lấy thông tin cơ sở dữ liệu từ request
$db_host = $request->db_host;
$db_name = $request->db_name;
$db_user = $request->db_username;
$db_pass = $request->db_password;
// Import cơ sở dữ liệu từ file database.sql đã có
$db_import = InstallationHelper::insert_database_sql_file(
$db_host,
$db_name,
$db_user,
$db_pass
);
if ($db_import["type"] === "danger") {
InstallationHelper::reverse_to_default_env();
return response()->json([
"type" => "danger",
"msg" => 'Failed to import database from SQL file.',
]);
}
// Thêm thông tin admin vào hệ thống
$admin_email = $request->admin_email;
$admin_password = $request->admin_password;
$admin_username = $request->admin_username;
$admin_name = $request->admin_name;
// Tạo admin
InstallationHelper::create_admin(
$admin_email,
$admin_password,
$admin_username,
$admin_name,
$db_host,
$db_name,
$db_user,
$db_pass
);
// Xóa cache
CacheCleaner::clearAllCaches();
// Xóa middleware demo
InstallationHelper::remove_middleware('\App\Http\Middleware\Demo::class');
// Thông báo thành công
$msg = "Installation Successful. If you still see the install notice on your website, clear your browser cache.";
$msg .= '<p>' . $tenant_msg . ' Setup cron job for subscription system to work properly. Here is an article for it: <a target="_blank" href="https://docs.xgenious.com/docs/nazmart-multi-tenancy-ecommerce-platform-saas/cron-job/"><i class="las la-external-link-alt"></i></a></p>';
return response()->json([
"type" => "success",
"msg" => $msg,
]);
}
// Kiểm tra xem file database.sql đã tồn tại hay chưa
public function checkDatabaseExists()
{
// Kiểm tra nếu file database.sql tồn tại
if (Storage::disk("local")->exists("database.sql")) {
return response()->json([
"type" => "success",
"msg" => "database.sql file found",
]);
}
return response()->json([
"type" => "danger",
"msg" => "Your installation file <strong>database.sql</strong> is missing. Please upload it manually.",
]);
}
}