mirror of
https://github.com/PhyreApps/PhyrePanel.git
synced 2024-11-22 07:30:25 +00:00
update
This commit is contained in:
parent
030d73cf77
commit
9c40235dba
7 changed files with 200 additions and 4 deletions
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Filament\Resources;
|
namespace App\Filament\Resources;
|
||||||
|
|
||||||
use App\Filament\Resources\HostingSubscriptionResource\Pages;
|
use App\Filament\Resources\HostingSubscriptionResource\Pages;
|
||||||
|
use app\Filament\Resources\HostingSubscriptionResource\Pages\ManageHostingSubscriptionFtpAccounts;
|
||||||
use App\Models\Customer;
|
use App\Models\Customer;
|
||||||
use App\Models\Domain;
|
use App\Models\Domain;
|
||||||
use App\Models\HostingSubscription;
|
use App\Models\HostingSubscription;
|
||||||
|
@ -188,6 +189,7 @@ class HostingSubscriptionResource extends Resource
|
||||||
Pages\EditHostingSubscription::class,
|
Pages\EditHostingSubscription::class,
|
||||||
Pages\ManageHostingSubscriptionDatabases::class,
|
Pages\ManageHostingSubscriptionDatabases::class,
|
||||||
Pages\ManageHostingSubscriptionBackups::class,
|
Pages\ManageHostingSubscriptionBackups::class,
|
||||||
|
ManageHostingSubscriptionFtpAccounts::class
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,6 +209,7 @@ class HostingSubscriptionResource extends Resource
|
||||||
'edit' => Pages\EditHostingSubscription::route('/{record}/edit'),
|
'edit' => Pages\EditHostingSubscription::route('/{record}/edit'),
|
||||||
'databases' => Pages\ManageHostingSubscriptionDatabases::route('/{record}/databases'),
|
'databases' => Pages\ManageHostingSubscriptionDatabases::route('/{record}/databases'),
|
||||||
'backups' => Pages\ManageHostingSubscriptionBackups::route('/{record}/backups'),
|
'backups' => Pages\ManageHostingSubscriptionBackups::route('/{record}/backups'),
|
||||||
|
'ftp-accounts' => Pages\ManageHostingSubscriptionFtpAccounts::route('/{record}/ftp-accounts'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ class ManageHostingSubscriptionBackups extends ManageRelatedRecords
|
||||||
|
|
||||||
public static function getNavigationLabel(): string
|
public static function getNavigationLabel(): string
|
||||||
{
|
{
|
||||||
return 'Manage Backups';
|
return 'Backups';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function form(Form $form): Form
|
public function form(Form $form): Form
|
||||||
|
@ -99,7 +99,7 @@ class ManageHostingSubscriptionBackups extends ManageRelatedRecords
|
||||||
}
|
}
|
||||||
|
|
||||||
return $table
|
return $table
|
||||||
->recordTitleAttribute('id')
|
->recordTitleAttribute('file_name')
|
||||||
->columns([
|
->columns([
|
||||||
|
|
||||||
Tables\Columns\TextColumn::make('backup_type')
|
Tables\Columns\TextColumn::make('backup_type')
|
||||||
|
|
|
@ -41,7 +41,7 @@ class ManageHostingSubscriptionDatabases extends ManageRelatedRecords
|
||||||
|
|
||||||
public static function getNavigationLabel(): string
|
public static function getNavigationLabel(): string
|
||||||
{
|
{
|
||||||
return 'Manage Databases';
|
return 'Databases';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function form(Form $form): Form
|
public function form(Form $form): Form
|
||||||
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\Filament\Resources\HostingSubscriptionResource\Pages;
|
||||||
|
|
||||||
|
use App\BackupStorage;
|
||||||
|
use App\Filament\Enums\BackupStatus;
|
||||||
|
use App\Filament\Enums\HostingSubscriptionBackupType;
|
||||||
|
use App\Filament\Resources\Blog\PostResource;
|
||||||
|
use App\Filament\Resources\HostingSubscriptionResource;
|
||||||
|
use App\Models\Backup;
|
||||||
|
use App\Models\DatabaseUser;
|
||||||
|
use App\Models\HostingSubscriptionBackup;
|
||||||
|
use App\Models\RemoteDatabaseServer;
|
||||||
|
use Filament\Forms;
|
||||||
|
use Filament\Forms\Form;
|
||||||
|
use Filament\Infolists\Components\IconEntry;
|
||||||
|
use Filament\Infolists\Components\TextEntry;
|
||||||
|
use Filament\Infolists\Infolist;
|
||||||
|
use Filament\Resources\Pages\ManageRelatedRecords;
|
||||||
|
use Filament\Tables;
|
||||||
|
use Filament\Tables\Table;
|
||||||
|
use Illuminate\Contracts\Support\Htmlable;
|
||||||
|
use Illuminate\Support\Carbon;
|
||||||
|
use JaOcero\RadioDeck\Forms\Components\RadioDeck;
|
||||||
|
|
||||||
|
class ManageHostingSubscriptionFtpAccounts extends ManageRelatedRecords
|
||||||
|
{
|
||||||
|
protected static string $resource = HostingSubscriptionResource::class;
|
||||||
|
|
||||||
|
protected static string $relationship = 'ftpAccounts';
|
||||||
|
|
||||||
|
protected static ?string $navigationIcon = 'heroicon-o-inbox-stack';
|
||||||
|
|
||||||
|
public function getTitle(): string|Htmlable
|
||||||
|
{
|
||||||
|
$recordTitle = $this->getRecordTitle();
|
||||||
|
|
||||||
|
$recordTitle = $recordTitle instanceof Htmlable ? $recordTitle->toHtml() : $recordTitle;
|
||||||
|
|
||||||
|
return "Manage {$recordTitle} FTP Accounts";
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getBreadcrumb(): string
|
||||||
|
{
|
||||||
|
return 'FTP Accounts';
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getNavigationLabel(): string
|
||||||
|
{
|
||||||
|
return 'FTP Accounts';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function form(Form $form): Form
|
||||||
|
{
|
||||||
|
$systemUsername = $this->record->system_username;
|
||||||
|
|
||||||
|
return $form
|
||||||
|
->schema([
|
||||||
|
|
||||||
|
Forms\Components\TextInput::make('username')
|
||||||
|
->label('Username')
|
||||||
|
->required(),
|
||||||
|
|
||||||
|
Forms\Components\TextInput::make('password')
|
||||||
|
->label('Password')
|
||||||
|
->required(),
|
||||||
|
Forms\Components\TextInput::make('confirm_password')
|
||||||
|
->label('Confirm Password')
|
||||||
|
->same('password')
|
||||||
|
->required(),
|
||||||
|
|
||||||
|
Forms\Components\TextInput::make('path')
|
||||||
|
->label('Home Directory')
|
||||||
|
->prefix('/home/' . $systemUsername . '/')
|
||||||
|
->required(),
|
||||||
|
|
||||||
|
Forms\Components\TextInput::make('quota')
|
||||||
|
->label('Quota'),
|
||||||
|
|
||||||
|
Forms\Components\Toggle::make('unlimited_quota')
|
||||||
|
->label('Unlimited Quota')
|
||||||
|
->default(false),
|
||||||
|
|
||||||
|
])
|
||||||
|
->columns(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function infolist(Infolist $infolist): Infolist
|
||||||
|
{
|
||||||
|
return $infolist
|
||||||
|
->columns(1)
|
||||||
|
->schema([
|
||||||
|
//TextEntry::make('id')->label('id'),
|
||||||
|
TextEntry::make('username')->label('Username'),
|
||||||
|
TextEntry::make('path')->label('Home Directory'),
|
||||||
|
TextEntry::make('quota')->label('Quota'),
|
||||||
|
IconEntry::make('unlimited_quota')->label('Unlimited Quota'),
|
||||||
|
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function table(Table $table): Table
|
||||||
|
{
|
||||||
|
|
||||||
|
return $table
|
||||||
|
->recordTitleAttribute('username')
|
||||||
|
->columns([
|
||||||
|
|
||||||
|
Tables\Columns\TextColumn::make('username')
|
||||||
|
->label('Username'),
|
||||||
|
|
||||||
|
Tables\Columns\TextColumn::make('path')
|
||||||
|
->label('Home Directory')
|
||||||
|
->default('/'),
|
||||||
|
|
||||||
|
|
||||||
|
])
|
||||||
|
->filters([
|
||||||
|
//
|
||||||
|
])
|
||||||
|
->headerActions([
|
||||||
|
Tables\Actions\CreateAction::make(),
|
||||||
|
//
|
||||||
|
])
|
||||||
|
->actions([
|
||||||
|
Tables\Actions\ViewAction::make(),
|
||||||
|
Tables\Actions\EditAction::make(),
|
||||||
|
Tables\Actions\DeleteAction::make(),
|
||||||
|
])
|
||||||
|
->groupedBulkActions([
|
||||||
|
Tables\Actions\DeleteBulkAction::make(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
|
@ -64,7 +64,7 @@ class HostingSubscription extends Model
|
||||||
if (empty($model->system_username)) {
|
if (empty($model->system_username)) {
|
||||||
throw new \Exception('System username is empty');
|
throw new \Exception('System username is empty');
|
||||||
}
|
}
|
||||||
|
|
||||||
$getLinuxUser = new GetLinuxUser();
|
$getLinuxUser = new GetLinuxUser();
|
||||||
$getLinuxUser->setUsername($model->system_username);
|
$getLinuxUser->setUsername($model->system_username);
|
||||||
$getLinuxUserStatus = $getLinuxUser->handle();
|
$getLinuxUserStatus = $getLinuxUser->handle();
|
||||||
|
@ -109,6 +109,11 @@ class HostingSubscription extends Model
|
||||||
return $this->hasMany(Domain::class);
|
return $this->hasMany(Domain::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function ftpAccounts()
|
||||||
|
{
|
||||||
|
return $this->hasMany(HostingSubscriptionFtpAccount::class);
|
||||||
|
}
|
||||||
|
|
||||||
private function _createLinuxWebUser($model): array
|
private function _createLinuxWebUser($model): array
|
||||||
{
|
{
|
||||||
$findCustomer = Customer::where('id', $model->customer_id)->first();
|
$findCustomer = Customer::where('id', $model->customer_id)->first();
|
||||||
|
|
19
web/app/Models/HostingSubscriptionFtpAccount.php
Normal file
19
web/app/Models/HostingSubscriptionFtpAccount.php
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class HostingSubscriptionFtpAccount extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'username',
|
||||||
|
'password',
|
||||||
|
'path',
|
||||||
|
'quota',
|
||||||
|
'unlimited_quota',
|
||||||
|
];
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('hosting_subscription_ftp_accounts', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
|
||||||
|
$table->bigInteger('hosting_subscription_id')->nullable();
|
||||||
|
$table->string('username')->nullable();
|
||||||
|
$table->string('password')->nullable();
|
||||||
|
$table->string('path')->nullable();
|
||||||
|
$table->string('quota')->nullable();
|
||||||
|
$table->tinyInteger('unlimited_quota')->nullable();
|
||||||
|
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('hosting_subscription_ftp_accounts');
|
||||||
|
}
|
||||||
|
};
|
Loading…
Reference in a new issue