mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-15 09:14:08 +00:00
Consolidate Admin/Update: 8 controllers into 1 UpdateController
Merge 7 single-action pipeline controllers (checkVersion, download, unzip, copy, delete, migrate, finish) into UpdateController with named methods. Remove dead UpdateController that duplicated the same logic but wasn't referenced in routes. Extract shared owner check into private ensureOwner() helper. Route URLs unchanged.
This commit is contained in:
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Update;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Update\Updater;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
class CheckVersionController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ((! $request->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);
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Update;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Update\Updater;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class CopyFilesController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ((! $request->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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Update;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Update\Updater;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class DeleteFilesController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ((! $request->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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Update;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Update\Updater;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class DownloadUpdateController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ((! $request->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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Update;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Update\Updater;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class FinishUpdateController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ((! $request->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);
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Update;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Update\Updater;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class MigrateUpdateController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ((! $request->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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Update;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Update\Updater;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class UnzipUpdateController extends Controller
|
||||
{
|
||||
/**
|
||||
* Handle the incoming request.
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ((! $request->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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user