mirror of
https://github.com/pelican-dev/panel.git
synced 2025-08-02 15:22:24 +02:00
Allow for backups to be renamed (#1546)
This commit is contained in:
parent
a777f4e0ff
commit
d307a2095b
@ -116,6 +116,37 @@ class BackupResource extends Resource
|
||||
])
|
||||
->actions([
|
||||
ActionGroup::make([
|
||||
Action::make('rename')
|
||||
->icon('tabler-pencil')
|
||||
->authorize(fn () => auth()->user()->can(Permission::ACTION_BACKUP_DELETE, $server))
|
||||
->label('Rename')
|
||||
->form([
|
||||
TextInput::make('name')
|
||||
->label('Backup Name')
|
||||
->required()
|
||||
->maxLength(255)
|
||||
->default(fn (Backup $backup) => $backup->name),
|
||||
])
|
||||
->action(function (Backup $backup, $data) {
|
||||
$oldName = $backup->name;
|
||||
$newName = $data['name'];
|
||||
|
||||
$backup->update(['name' => $newName]);
|
||||
|
||||
if ($oldName !== $newName) {
|
||||
Activity::event('server:backup.rename')
|
||||
->subject($backup)
|
||||
->property(['old_name' => $oldName, 'new_name' => $newName])
|
||||
->log();
|
||||
}
|
||||
|
||||
Notification::make()
|
||||
->title('Backup Renamed')
|
||||
->body('The backup has been successfully renamed.')
|
||||
->success()
|
||||
->send();
|
||||
})
|
||||
->visible(fn (Backup $backup) => $backup->status === BackupStatus::Successful),
|
||||
Action::make('lock')
|
||||
->icon(fn (Backup $backup) => !$backup->is_locked ? 'tabler-lock' : 'tabler-lock-open')
|
||||
->authorize(fn () => auth()->user()->can(Permission::ACTION_BACKUP_DELETE, $server))
|
||||
|
@ -19,6 +19,7 @@ use App\Http\Controllers\Api\Client\ClientApiController;
|
||||
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
|
||||
use App\Http\Requests\Api\Client\Servers\Backups\StoreBackupRequest;
|
||||
use App\Http\Requests\Api\Client\Servers\Backups\RestoreBackupRequest;
|
||||
use App\Http\Requests\Api\Client\Servers\Backups\RenameBackupRequest;
|
||||
use Dedoc\Scramble\Attributes\Group;
|
||||
|
||||
#[Group('Server - Backup')]
|
||||
@ -195,6 +196,35 @@ class BackupController extends ClientApiController
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename backup
|
||||
*
|
||||
* Updates the name of a backup for a server instance.
|
||||
*
|
||||
* @return array<array-key, mixed>
|
||||
*
|
||||
* @throws \Throwable
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function rename(RenameBackupRequest $request, Server $server, Backup $backup): array
|
||||
{
|
||||
$oldName = $backup->name;
|
||||
$newName = $request->input('name');
|
||||
|
||||
$backup->update(['name' => $newName]);
|
||||
|
||||
if ($oldName !== $newName) {
|
||||
Activity::event('server:backup.rename')
|
||||
->subject($backup)
|
||||
->property(['old_name' => $oldName, 'new_name' => $newName])
|
||||
->log();
|
||||
}
|
||||
|
||||
return $this->fractal->item($backup)
|
||||
->transformWith($this->getTransformer(BackupTransformer::class))
|
||||
->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore backup
|
||||
*
|
||||
|
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Api\Client\Servers\Backups;
|
||||
|
||||
use App\Models\Permission;
|
||||
use App\Http\Requests\Api\Client\ClientApiRequest;
|
||||
|
||||
class RenameBackupRequest extends ClientApiRequest
|
||||
{
|
||||
public function permission(): string
|
||||
{
|
||||
return Permission::ACTION_BACKUP_DELETE;
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string|max:255',
|
||||
];
|
||||
}
|
||||
}
|
@ -58,6 +58,7 @@ return [
|
||||
'fail' => 'Marked the <b>:name</b> backup as failed',
|
||||
'lock' => 'Locked the <b>:name</b> backup',
|
||||
'unlock' => 'Unlocked the <b>:name</b> backup',
|
||||
'rename' => 'Renamed backup from "<b>:old_name</b>" to "<b>:new_name</b>"',
|
||||
],
|
||||
'database' => [
|
||||
'create' => 'Created new database <b>:name</b>',
|
||||
|
@ -117,6 +117,7 @@ Route::prefix('/servers/{server:uuid}')->middleware([ServerSubject::class, Authe
|
||||
Route::post('/', [Client\Servers\BackupController::class, 'store']);
|
||||
Route::get('/{backup:uuid}', [Client\Servers\BackupController::class, 'view']);
|
||||
Route::get('/{backup:uuid}/download', [Client\Servers\BackupController::class, 'download']);
|
||||
Route::put('/{backup:uuid}/rename', [Client\Servers\BackupController::class, 'rename']);
|
||||
Route::post('/{backup:uuid}/lock', [Client\Servers\BackupController::class, 'toggleLock']);
|
||||
Route::post('/{backup:uuid}/restore', [Client\Servers\BackupController::class, 'restore']);
|
||||
Route::delete('/{backup:uuid}', [Client\Servers\BackupController::class, 'delete']);
|
||||
|
Loading…
x
Reference in New Issue
Block a user