diff --git a/app/Http/Controllers/Admin/Update/CheckVersionController.php b/app/Http/Controllers/Admin/Update/CheckVersionController.php deleted file mode 100644 index 06ed80cb..00000000 --- a/app/Http/Controllers/Admin/Update/CheckVersionController.php +++ /dev/null @@ -1,35 +0,0 @@ -user()) || (! $request->user()->isOwner())) { - return response()->json([ - 'success' => false, - 'message' => 'You are not allowed to update this app.', - ], 401); - } - - set_time_limit(600); // 10 minutes - - $channel = $request->get('channel', 'stable'); - $version = preg_replace('~[\r\n]+~', '', File::get(base_path('version.md'))); - $response = Updater::checkForUpdate($version, $channel); - - return response()->json($response); - } -} diff --git a/app/Http/Controllers/Admin/Update/CopyFilesController.php b/app/Http/Controllers/Admin/Update/CopyFilesController.php deleted file mode 100644 index bde6b54b..00000000 --- a/app/Http/Controllers/Admin/Update/CopyFilesController.php +++ /dev/null @@ -1,37 +0,0 @@ -user()) || (! $request->user()->isOwner())) { - return response()->json([ - 'success' => false, - 'message' => 'You are not allowed to update this app.', - ], 401); - } - - $request->validate([ - 'path' => 'required', - ]); - - $path = Updater::copyFiles($request->path); - - return response()->json([ - 'success' => true, - 'path' => $path, - ]); - } -} diff --git a/app/Http/Controllers/Admin/Update/DeleteFilesController.php b/app/Http/Controllers/Admin/Update/DeleteFilesController.php deleted file mode 100644 index ca37a9e3..00000000 --- a/app/Http/Controllers/Admin/Update/DeleteFilesController.php +++ /dev/null @@ -1,34 +0,0 @@ -user()) || (! $request->user()->isOwner())) { - return response()->json([ - 'success' => false, - 'message' => 'You are not allowed to update this app.', - ], 401); - } - - if (isset($request->deleted_files) && ! empty($request->deleted_files)) { - Updater::deleteFiles($request->deleted_files); - } - - return response()->json([ - 'success' => true, - ]); - } -} diff --git a/app/Http/Controllers/Admin/Update/DownloadUpdateController.php b/app/Http/Controllers/Admin/Update/DownloadUpdateController.php deleted file mode 100644 index 7ce1185f..00000000 --- a/app/Http/Controllers/Admin/Update/DownloadUpdateController.php +++ /dev/null @@ -1,37 +0,0 @@ -user()) || (! $request->user()->isOwner())) { - return response()->json([ - 'success' => false, - 'message' => 'You are not allowed to update this app.', - ], 401); - } - - $request->validate([ - 'version' => 'required', - ]); - - $path = Updater::download($request->version); - - return response()->json([ - 'success' => true, - 'path' => $path, - ]); - } -} diff --git a/app/Http/Controllers/Admin/Update/FinishUpdateController.php b/app/Http/Controllers/Admin/Update/FinishUpdateController.php deleted file mode 100644 index 3d3935b4..00000000 --- a/app/Http/Controllers/Admin/Update/FinishUpdateController.php +++ /dev/null @@ -1,35 +0,0 @@ -user()) || (! $request->user()->isOwner())) { - return response()->json([ - 'success' => false, - 'message' => 'You are not allowed to update this app.', - ], 401); - } - - $request->validate([ - 'installed' => 'required', - 'version' => 'required', - ]); - - $json = Updater::finishUpdate($request->installed, $request->version); - - return response()->json($json); - } -} diff --git a/app/Http/Controllers/Admin/Update/MigrateUpdateController.php b/app/Http/Controllers/Admin/Update/MigrateUpdateController.php deleted file mode 100644 index 380a0152..00000000 --- a/app/Http/Controllers/Admin/Update/MigrateUpdateController.php +++ /dev/null @@ -1,32 +0,0 @@ -user()) || (! $request->user()->isOwner())) { - return response()->json([ - 'success' => false, - 'message' => 'You are not allowed to update this app.', - ], 401); - } - - Updater::migrateUpdate(); - - return response()->json([ - 'success' => true, - ]); - } -} diff --git a/app/Http/Controllers/Admin/Update/UnzipUpdateController.php b/app/Http/Controllers/Admin/Update/UnzipUpdateController.php deleted file mode 100644 index 649158de..00000000 --- a/app/Http/Controllers/Admin/Update/UnzipUpdateController.php +++ /dev/null @@ -1,44 +0,0 @@ -user()) || (! $request->user()->isOwner())) { - return response()->json([ - 'success' => false, - 'message' => 'You are not allowed to update this app.', - ], 401); - } - - $request->validate([ - 'path' => 'required', - ]); - - try { - $path = Updater::unzip($request->path); - - return response()->json([ - 'success' => true, - 'path' => $path, - ]); - } catch (\Exception $e) { - return response()->json([ - 'success' => false, - 'error' => $e->getMessage(), - ], 500); - } - } -} diff --git a/app/Http/Controllers/Admin/Update/UpdateController.php b/app/Http/Controllers/Admin/Update/UpdateController.php index c71cf202..b8db2ff1 100644 --- a/app/Http/Controllers/Admin/Update/UpdateController.php +++ b/app/Http/Controllers/Admin/Update/UpdateController.php @@ -3,42 +3,47 @@ namespace App\Http\Controllers\Admin\Update; use App\Http\Controllers\Controller; -use App\Models\Setting; use App\Services\Update\Updater; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\File; class UpdateController extends Controller { - public function download(Request $request) + public function checkVersion(Request $request): JsonResponse { - $this->authorize('manage update app'); + $this->ensureOwner($request); - $request->validate([ - 'version' => 'required', - ]); + set_time_limit(600); - $path = Updater::download($request->version); + $channel = $request->get('channel', 'stable'); + $version = preg_replace('~[\r\n]+~', '', File::get(base_path('version.md'))); + + return response()->json(Updater::checkForUpdate($version, $channel)); + } + + public function download(Request $request): JsonResponse + { + $this->ensureOwner($request); + + $request->validate(['version' => 'required']); return response()->json([ 'success' => true, - 'path' => $path, + 'path' => Updater::download($request->version), ]); } - public function unzip(Request $request) + public function unzip(Request $request): JsonResponse { - $this->authorize('manage update app'); + $this->ensureOwner($request); - $request->validate([ - 'path' => 'required', - ]); + $request->validate(['path' => 'required']); try { - $path = Updater::unzip($request->path); - return response()->json([ 'success' => true, - 'path' => $path, + 'path' => Updater::unzip($request->path), ]); } catch (\Exception $e) { return response()->json([ @@ -48,55 +53,54 @@ class UpdateController extends Controller } } - public function copyFiles(Request $request) + public function copy(Request $request): JsonResponse { - $this->authorize('manage update app'); + $this->ensureOwner($request); - $request->validate([ - 'path' => 'required', - ]); - - $path = Updater::copyFiles($request->path); + $request->validate(['path' => 'required']); return response()->json([ 'success' => true, - 'path' => $path, + 'path' => Updater::copyFiles($request->path), ]); } - public function migrate(Request $request) + public function delete(Request $request): JsonResponse { - $this->authorize('manage update app'); + $this->ensureOwner($request); + + if (isset($request->deleted_files) && ! empty($request->deleted_files)) { + Updater::deleteFiles($request->deleted_files); + } + + return response()->json(['success' => true]); + } + + public function migrate(Request $request): JsonResponse + { + $this->ensureOwner($request); Updater::migrateUpdate(); - return response()->json([ - 'success' => true, - ]); + return response()->json(['success' => true]); } - public function finishUpdate(Request $request) + public function finish(Request $request): JsonResponse { - $this->authorize('manage update app'); + $this->ensureOwner($request); $request->validate([ 'installed' => 'required', 'version' => 'required', ]); - $json = Updater::finishUpdate($request->installed, $request->version); - - return response()->json($json); + return response()->json(Updater::finishUpdate($request->installed, $request->version)); } - public function checkLatestVersion(Request $request) + private function ensureOwner(Request $request): void { - $this->authorize('manage update app'); - - set_time_limit(600); // 10 minutes - - $json = Updater::checkForUpdate(Setting::getSetting('version')); - - return response()->json($json); + if (! $request->user() || ! $request->user()->isOwner()) { + abort(401, 'You are not allowed to update this app.'); + } } } diff --git a/routes/api.php b/routes/api.php index 6bebd1c8..33e76b0c 100644 --- a/routes/api.php +++ b/routes/api.php @@ -9,13 +9,7 @@ use App\Http\Controllers\Admin\Settings\DiskController; use App\Http\Controllers\Admin\Settings\MailConfigurationController; use App\Http\Controllers\Admin\Settings\PDFConfigurationController; use App\Http\Controllers\Admin\Settings\SettingsController; -use App\Http\Controllers\Admin\Update\CheckVersionController; -use App\Http\Controllers\Admin\Update\CopyFilesController; -use App\Http\Controllers\Admin\Update\DeleteFilesController; -use App\Http\Controllers\Admin\Update\DownloadUpdateController; -use App\Http\Controllers\Admin\Update\FinishUpdateController; -use App\Http\Controllers\Admin\Update\MigrateUpdateController; -use App\Http\Controllers\Admin\Update\UnzipUpdateController; +use App\Http\Controllers\Admin\Update\UpdateController; use App\Http\Controllers\AppVersionController; use App\Http\Controllers\Company\Auth\AuthController; use App\Http\Controllers\Company\Auth\ForgotPasswordController; @@ -413,19 +407,13 @@ Route::prefix('/v1')->group(function () { // Self Update // ---------------------------------- - Route::get('/check/update', CheckVersionController::class); - - Route::post('/update/download', DownloadUpdateController::class); - - Route::post('/update/unzip', UnzipUpdateController::class); - - Route::post('/update/copy', CopyFilesController::class); - - Route::post('/update/delete', DeleteFilesController::class); - - Route::post('/update/migrate', MigrateUpdateController::class); - - Route::post('/update/finish', FinishUpdateController::class); + Route::get('/check/update', [UpdateController::class, 'checkVersion']); + Route::post('/update/download', [UpdateController::class, 'download']); + Route::post('/update/unzip', [UpdateController::class, 'unzip']); + Route::post('/update/copy', [UpdateController::class, 'copy']); + Route::post('/update/delete', [UpdateController::class, 'delete']); + Route::post('/update/migrate', [UpdateController::class, 'migrate']); + Route::post('/update/finish', [UpdateController::class, 'finish']); // Companies // -------------------------------------------------