Backups.php
1 <?php 2 3 namespace App\Http\Livewire; 4 5 use App\Jobs\MakeBackup; 6 use Exception; 7 use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 8 use Illuminate\Support\Facades\Artisan; 9 use Illuminate\Support\Facades\Storage; 10 use Livewire\Component; 11 use Livewire\WithPagination; 12 use WireUi\Traits\Actions; 13 14 class Backups extends Component 15 { 16 use Actions, AuthorizesRequests, WithPagination; 17 18 public array $displayableConfig; 19 20 public function readBackupConfig() 21 { 22 $displayableConfig = [ 23 'keep_all_backups_for_days' => config('backups.cleanup.default_strategy.keep_all_backups_for_days'), 24 'keep_daily_backups_for_days' => config('backups.cleanup.default_strategy.keep_daily_backups_for_days'), 25 'keep_weekly_backups_for_weeks' => config('backups.cleanup.default_strategy.keep_weekly_backups_for_weeks'), 26 'keep_monthly_backups_for_months' => config('backups.cleanup.default_strategy.keep_monthly_backups_for_months'), 27 'keep_yearly_backups_for_years' => config('backups.cleanup.default_strategy.keep_yearly_backups_for_years'), 28 ]; 29 30 return $displayableConfig; 31 } 32 33 public function readBackups() 34 { 35 return Storage::files(config('backups.backup.name')); 36 } 37 38 public function getBackupsProperty() 39 { 40 return collect($this->readBackups())->paginate(10); 41 } 42 43 public function createBackup() 44 { 45 $this->authorize('can_manage_backups'); 46 47 dispatch(new MakeBackup()); 48 49 $this->notification()->success( 50 __('settings.backups.creating.title'), 51 __('settings.backups.creating.description'), 52 ); 53 } 54 55 public function downloadBackup(string $backup) 56 { 57 $this->authorize('can_manage_gpg'); 58 59 return Storage::download($backup); 60 } 61 62 public function deleteBackup(string $backup) 63 { 64 $this->authorize('can_manage_gpg'); 65 66 Storage::delete($backup); 67 } 68 69 public function mount() 70 { 71 $this->displayableConfig = $this->readBackupConfig(); 72 } 73 74 public function createBackupDialog() 75 { 76 $this->dialog()->confirm([ 77 'title' => __('settings.backups.creating.title'), 78 'description' => __('settings.backups.creating.description'), 79 'acceptLabel' => __('settings.backups.creating.accept'), 80 'rejectLabel' => __('settings.backups.creating.reject'), 81 'method' => 'createBackup', 82 ]); 83 } 84 85 public function deleteBackupDialog($backup) 86 { 87 $this->dialog()->confirm([ 88 'title' => __('settings.backups.delete.title'), 89 'description' => __('settings.backups.delete.description', ['backup' => $backup]), 90 'acceptLabel' => __('settings.backups.delete.accept'), 91 'rejectLabel' => __('settings.backups.delete.reject'), 92 'method' => 'deleteBackup', 93 'params' => $backup, 94 ]); 95 } 96 97 public function render() 98 { 99 return view('livewire.backups'); 100 } 101 }