This commit is contained in:
Bozhidar Slaveykov 2024-04-05 17:33:54 +03:00
parent 95f1cae4e9
commit 014172d525
17 changed files with 67 additions and 78 deletions

View file

@ -7,7 +7,7 @@ use App\ApiClient;
use App\Events\HostingAccountIsCreated; use App\Events\HostingAccountIsCreated;
use App\FileManagerApi; use App\FileManagerApi;
use App\Models\HostingPlan; use App\Models\HostingPlan;
use App\Models\WebsiteSslCertificate; use App\Models\DomainSslCertificate;
use App\Settings; use App\Settings;
use App\ShellApi; use App\ShellApi;
@ -26,7 +26,7 @@ class HostingAccountIsCreatedListener
*/ */
public function handle(HostingAccountIsCreated $event): void public function handle(HostingAccountIsCreated $event): void
{ {
$findWebsite = \App\Models\Website::where('id', $event->model->id)->first(); $findWebsite = \App\Models\Domain::where('id', $event->model->id)->first();
if (!$findWebsite) { if (!$findWebsite) {
return; return;
} }
@ -85,7 +85,7 @@ class HostingAccountIsCreatedListener
return; return;
} }
$websiteSslCertificate = new WebsiteSslCertificate(); $websiteSslCertificate = new DomainSslCertificate();
$websiteSslCertificate->domain = $event->model->domain; $websiteSslCertificate->domain = $event->model->domain;
$websiteSslCertificate->certificate = $validateCertificates['certificate']; $websiteSslCertificate->certificate = $validateCertificates['certificate'];
$websiteSslCertificate->private_key = $validateCertificates['private_key']; $websiteSslCertificate->private_key = $validateCertificates['private_key'];

View file

@ -2,7 +2,7 @@
namespace Modules\Microweber\App\Models; namespace Modules\Microweber\App\Models;
use App\Models\Website; use App\Models\Domain;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Microweber\Database\factories\MicroweberInstallationFactory; use Modules\Microweber\Database\factories\MicroweberInstallationFactory;
@ -14,7 +14,7 @@ class MicroweberInstallation extends Model
public function website() public function website()
{ {
return $this->hasOne(Website::class, 'id', 'website_id'); return $this->hasOne(Domain::class, 'id', 'website_id');
} }
} }

View file

@ -2,7 +2,7 @@
namespace Modules\Microweber\Filament\Clusters\Microweber\Resources\InstallationResource\Pages; namespace Modules\Microweber\Filament\Clusters\Microweber\Resources\InstallationResource\Pages;
use App\Models\Website; use App\Models\Domain;
use Filament\Actions; use Filament\Actions;
use Filament\Resources\Pages\ListRecords; use Filament\Resources\Pages\ListRecords;
use MicroweberPackages\SharedServerScripts\MicroweberInstallationsScanner; use MicroweberPackages\SharedServerScripts\MicroweberInstallationsScanner;
@ -23,7 +23,7 @@ class ListInstallations extends ListRecords
public function scanForInstallations() public function scanForInstallations()
{ {
$findWebsites = Website::all(); $findWebsites = Domain::all();
foreach ($findWebsites as $website) { foreach ($findWebsites as $website) {
$scan = new MicroweberInstallationsScanner(); $scan = new MicroweberInstallationsScanner();

View file

@ -23,7 +23,7 @@ class HostingAccountIsCreatedListener
*/ */
public function handle(HostingAccountIsCreated $event): void public function handle(HostingAccountIsCreated $event): void
{ {
$findWebsite = \App\Models\Website::where('id', $event->model->id)->first(); $findWebsite = \App\Models\Domain::where('id', $event->model->id)->first();
if (!$findWebsite) { if (!$findWebsite) {
return; return;
} }

View file

@ -2,7 +2,7 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Models\Website; use App\Models\Domain;
use Illuminate\Console\Command; use Illuminate\Console\Command;
class ApachePingWebsitesWithCurl extends Command class ApachePingWebsitesWithCurl extends Command
@ -42,7 +42,7 @@ class ApachePingWebsitesWithCurl extends Command
} }
// Retrieve all website configurations from the database // Retrieve all website configurations from the database
$websiteConfigs = Website::get(); $websiteConfigs = Domain::get();
foreach ($websiteConfigs as $config) { foreach ($websiteConfigs as $config) {
$domain = $config->domain; $domain = $config->domain;

View file

@ -4,7 +4,7 @@ namespace App\Filament\Resources;
use App\Filament\Resources\WebsiteResource\Pages; use App\Filament\Resources\WebsiteResource\Pages;
use App\Filament\Resources\WebsiteResource\RelationManagers; use App\Filament\Resources\WebsiteResource\RelationManagers;
use App\Models\Website; use App\Models\Domain;
use Filament\Forms; use Filament\Forms;
use Filament\Forms\Form; use Filament\Forms\Form;
use Filament\Resources\Resource; use Filament\Resources\Resource;
@ -16,7 +16,7 @@ use Illuminate\Support\Str;
class WebsiteResource extends Resource class WebsiteResource extends Resource
{ {
protected static ?string $model = Website::class; protected static ?string $model = Domain::class;
protected static ?string $navigationIcon = 'heroicon-o-globe-europe-africa'; protected static ?string $navigationIcon = 'heroicon-o-globe-europe-africa';

View file

@ -3,7 +3,7 @@
namespace App\Filament\Widgets; namespace App\Filament\Widgets;
use App\Models\Customer; use App\Models\Customer;
use App\Models\Website; use App\Models\Domain;
use Filament\Widgets\StatsOverviewWidget as BaseWidget; use Filament\Widgets\StatsOverviewWidget as BaseWidget;
use Filament\Widgets\StatsOverviewWidget\Stat; use Filament\Widgets\StatsOverviewWidget\Stat;
@ -21,7 +21,7 @@ class CustomersCount extends BaseWidget
$customersCount = Customer::count(); $customersCount = Customer::count();
$websiteCount = Website::count(); $websiteCount = Domain::count();
return [ return [
// Stat::make('Total Memory', $serverStats['memory']['total']), // Stat::make('Total Memory', $serverStats['memory']['total']),

View file

@ -3,7 +3,7 @@
namespace App\Filament\Widgets; namespace App\Filament\Widgets;
use App\Models\Customer; use App\Models\Customer;
use App\Models\Website; use App\Models\Domain;
use Filament\Widgets\StatsOverviewWidget as BaseWidget; use Filament\Widgets\StatsOverviewWidget as BaseWidget;
use Filament\Widgets\StatsOverviewWidget\Stat; use Filament\Widgets\StatsOverviewWidget\Stat;

View file

@ -2,7 +2,7 @@
namespace App\Filament\Widgets; namespace App\Filament\Widgets;
use App\Models\Website; use App\Models\Domain;
use Faker\Provider\Text; use Faker\Provider\Text;
use Filament\Tables; use Filament\Tables;
use Filament\Tables\Table; use Filament\Tables\Table;
@ -22,7 +22,7 @@ class Websites extends BaseWidget
{ {
return $table return $table
->query( ->query(
Website::query() Domain::query()
) )
->actions([ ->actions([
Tables\Actions\Action::make('visit') Tables\Actions\Action::make('visit')

View file

@ -28,7 +28,7 @@ class ModelWebsiteCreatedListener
*/ */
public function handle(ModelWebsiteCreated $event): void public function handle(ModelWebsiteCreated $event): void
{ {
$findWebsite = \App\Models\Website::where('id', $event->model->id)->first(); $findWebsite = \App\Models\Domain::where('id', $event->model->id)->first();
if (!$findWebsite) { if (!$findWebsite) {
return; return;
} }

33
web/app/Models/Domain.php Normal file
View file

@ -0,0 +1,33 @@
<?php
namespace App\Models;
use App\Actions\ApacheWebsiteCreate;
use App\ShellApi;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Domain extends Model
{
protected $fillable = [
'domain',
'domain_root',
'ip',
'hosting_subscription_id',
];
public static function boot()
{
parent::boot();
// static::created(function ($model) {
// event(new \App\Events\ModelWebsiteCreated($model));
// });
//
// static::deleting(function ($model) {
// event(new \App\Events\ModelWebsiteDeleting($model));
// });
}
}

View file

@ -5,7 +5,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
class WebsiteSslCertificate extends Model class DomainSslCertificate extends Model
{ {
use HasFactory; use HasFactory;

View file

@ -1,44 +0,0 @@
<?php
namespace App\Models;
use App\Actions\ApacheWebsiteCreate;
use App\ShellApi;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Website extends Model
{
protected $fillable = [
'domain',
'domain_root',
'ip',
'customer_id',
'is_active',
'hosting_plan_id',
];
public static function boot()
{
parent::boot();
static::created(function ($model) {
event(new \App\Events\ModelWebsiteCreated($model));
});
static::deleting(function ($model) {
event(new \App\Events\ModelWebsiteDeleting($model));
});
}
public function hostingPlan()
{
return $this->belongsTo(HostingPlan::class);
}
public function customer()
{
return $this->hasOne(Customer::class, 'id', 'customer_id');
}
}

View file

@ -4,7 +4,7 @@ namespace App\Policies;
use App\Models\Customer; use App\Models\Customer;
use App\Models\User; use App\Models\User;
use App\Models\Website; use App\Models\Domain;
use Illuminate\Auth\Access\Response; use Illuminate\Auth\Access\Response;
class CustomerPolicy class CustomerPolicy
@ -62,7 +62,7 @@ class CustomerPolicy
*/ */
public function forceDelete(User $user, Customer $customer) : bool public function forceDelete(User $user, Customer $customer) : bool
{ {
$findWebsites = Website::where('customer_id', $customer->id)->count(); $findWebsites = Domain::where('customer_id', $customer->id)->count();
if ($findWebsites > 0) { if ($findWebsites > 0) {
Response::deny('Customer has websites, please delete them first.'); Response::deny('Customer has websites, please delete them first.');
return false; return false;

View file

@ -11,21 +11,19 @@ return new class extends Migration
*/ */
public function up(): void public function up(): void
{ {
Schema::create('websites', function (Blueprint $table) { Schema::create('domains', function (Blueprint $table) {
$table->id(); $table->id();
$table->string('domain'); $table->string('domain');
$table->string('ip')->nullable(); $table->string('ip')->nullable();
$table->string('domain_root')->nullable(); $table->string('domain_root')->nullable();
$table->string('domain_public')->nullable(); $table->string('domain_public')->nullable();
$table->string('domain_username')->nullable();
$table->string('home_root')->nullable();
$table->string('screenshot')->nullable();
$table->integer('customer_id')->nullable(); $table->integer('hosting_subscription_id')->nullable();
$table->integer('is_active')->nullable();
$table->string('screenshot')->nullable();
$table->integer('is_secure_with_ssl')->nullable(); $table->integer('is_secure_with_ssl')->nullable();
$table->integer('hosting_plan_id')->nullable();
$table->timestamps(); $table->timestamps();
}); });
@ -36,6 +34,6 @@ return new class extends Migration
*/ */
public function down(): void public function down(): void
{ {
Schema::dropIfExists('websites'); Schema::dropIfExists('domains');
} }
}; };

View file

@ -11,7 +11,7 @@ return new class extends Migration
*/ */
public function up(): void public function up(): void
{ {
Schema::create('website_ssl_certificates', function (Blueprint $table) { Schema::create('domain_ssl_certificates', function (Blueprint $table) {
$table->id(); $table->id();
$table->string('domain'); $table->string('domain');
@ -42,6 +42,6 @@ return new class extends Migration
*/ */
public function down(): void public function down(): void
{ {
Schema::dropIfExists('website_ssl_certificates'); Schema::dropIfExists('domain_ssl_certificates');
} }
}; };

View file

@ -17,9 +17,11 @@ return new class extends Migration
$table->bigInteger('customer_id')->nullable(); $table->bigInteger('customer_id')->nullable();
$table->bigInteger('hosting_plan_id')->nullable(); $table->bigInteger('hosting_plan_id')->nullable();
$table->string('domain')->nullable(); $table->string('main_domain_id')->nullable();
$table->string('username')->nullable();
$table->string('password')->nullable(); $table->string('system_username')->nullable();
$table->string('system_password')->nullable();
$table->longText('description')->nullable(); $table->longText('description')->nullable();
$table->timestamp('setup_date')->nullable(); $table->timestamp('setup_date')->nullable();