From a1792327347a56ea575240b58673b2ece44230da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Duli=C3=A7i?= Date: Mon, 14 Feb 2022 18:00:44 +0300 Subject: [PATCH] added install request --- app/Http/Controllers/Install/Updates.php | 12 ++++++------ app/Http/Controllers/Modules/Item.php | 11 ++++++----- app/Http/Requests/Module/Install.php | 24 ++++++++++++++++++++++++ app/Jobs/Install/DisableModule.php | 15 +++++++++++++++ app/Jobs/Install/EnableModule.php | 15 +++++++++++++++ app/Jobs/Install/FinishUpdate.php | 15 +++++++++++++++ app/Jobs/Install/InstallModule.php | 15 +++++++++++++++ app/Jobs/Install/UninstallModule.php | 15 +++++++++++++++ 8 files changed, 111 insertions(+), 11 deletions(-) create mode 100644 app/Http/Requests/Module/Install.php diff --git a/app/Http/Controllers/Install/Updates.php b/app/Http/Controllers/Install/Updates.php index 22b1e70a9..a225c2ac5 100644 --- a/app/Http/Controllers/Install/Updates.php +++ b/app/Http/Controllers/Install/Updates.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Install; use App\Abstracts\Http\Controller; +use App\Http\Requests\Module\Install as InstallRequest; use App\Events\Install\UpdateCacheCleared; use App\Events\Install\UpdateCopied; use App\Events\Install\UpdateDownloaded; @@ -13,7 +14,6 @@ use App\Jobs\Install\FinishUpdate; use App\Jobs\Install\UnzipFile; use App\Utilities\Versions; use Illuminate\Support\Facades\Cache; -use Illuminate\Http\Request; class Updates extends Controller { @@ -110,7 +110,7 @@ class Updates extends Controller * * @return Response */ - public function steps(Request $request) + public function steps(InstallRequest $request) { $steps = []; @@ -161,7 +161,7 @@ class Updates extends Controller * * @return Response */ - public function download(Request $request) + public function download(InstallRequest $request) { set_time_limit(900); // 15 minutes @@ -197,7 +197,7 @@ class Updates extends Controller * * @return Response */ - public function unzip(Request $request) + public function unzip(InstallRequest $request) { set_time_limit(900); // 15 minutes @@ -233,7 +233,7 @@ class Updates extends Controller * * @return Response */ - public function copyFiles(Request $request) + public function copyFiles(InstallRequest $request) { set_time_limit(900); // 15 minutes @@ -269,7 +269,7 @@ class Updates extends Controller * * @return Response */ - public function finish(Request $request) + public function finish(InstallRequest $request) { set_time_limit(900); // 15 minutes diff --git a/app/Http/Controllers/Modules/Item.php b/app/Http/Controllers/Modules/Item.php index 7cfce9518..1d0eaa1bb 100644 --- a/app/Http/Controllers/Modules/Item.php +++ b/app/Http/Controllers/Modules/Item.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Modules; use App\Abstracts\Http\Controller; +use App\Http\Requests\Module\Install as InstallRequest; use App\Jobs\Install\CopyFiles; use App\Jobs\Install\DisableModule; use App\Jobs\Install\DownloadFile; @@ -81,7 +82,7 @@ class Item extends Controller * * @return Response */ - public function steps(Request $request) + public function steps(InstallRequest $request) { $steps = []; @@ -135,7 +136,7 @@ class Item extends Controller * * @return Response */ - public function download(Request $request) + public function download(InstallRequest $request) { try { $path = $this->dispatch(new DownloadFile($request['alias'], $request['version'])); @@ -167,7 +168,7 @@ class Item extends Controller * * @return Response */ - public function unzip(Request $request) + public function unzip(InstallRequest $request) { try { $path = $this->dispatch(new UnzipFile($request['alias'], $request['path'])); @@ -199,7 +200,7 @@ class Item extends Controller * * @return Response */ - public function copy(Request $request) + public function copy(InstallRequest $request) { try { $this->dispatch(new CopyFiles($request['alias'], $request['path'])); @@ -233,7 +234,7 @@ class Item extends Controller * * @return Response */ - public function install(Request $request) + public function install(InstallRequest $request) { try { event(new \App\Events\Module\Installing($request['alias'], company_id())); diff --git a/app/Http/Requests/Module/Install.php b/app/Http/Requests/Module/Install.php new file mode 100644 index 000000000..f30a471d4 --- /dev/null +++ b/app/Http/Requests/Module/Install.php @@ -0,0 +1,24 @@ + 'nullable|string', + 'alias' => 'alpha_dash', + 'version' => 'nullable|regex:/^[a-z0-9.]+$/i', + 'installed' => 'nullable|regex:/^[a-z0-9.]+$/i', + 'path' => 'nullable|string', + ]; + } +} diff --git a/app/Jobs/Install/DisableModule.php b/app/Jobs/Install/DisableModule.php index cc3854caf..daa6bdc1c 100644 --- a/app/Jobs/Install/DisableModule.php +++ b/app/Jobs/Install/DisableModule.php @@ -3,10 +3,13 @@ namespace App\Jobs\Install; use App\Abstracts\Job; +use App\Traits\Modules; use App\Utilities\Console; class DisableModule extends Job { + use Modules; + protected $alias; protected $company_id; @@ -34,6 +37,8 @@ class DisableModule extends Job */ public function handle() { + $this->authorize(); + $command = "module:disable {$this->alias} {$this->company_id} {$this->locale}"; $result = Console::run($command); @@ -42,4 +47,14 @@ class DisableModule extends Job throw new \Exception($result); } } + + /** + * Determine if this action is applicable. + */ + public function authorize(): void + { + if (! $this->moduleExists($this->alias)) { + throw new \Exception("Module [{$this->alias}] not found."); + } + } } diff --git a/app/Jobs/Install/EnableModule.php b/app/Jobs/Install/EnableModule.php index 8f225e2da..416719a57 100644 --- a/app/Jobs/Install/EnableModule.php +++ b/app/Jobs/Install/EnableModule.php @@ -3,10 +3,13 @@ namespace App\Jobs\Install; use App\Abstracts\Job; +use App\Traits\Modules; use App\Utilities\Console; class EnableModule extends Job { + use Modules; + protected $alias; protected $company_id; @@ -34,6 +37,8 @@ class EnableModule extends Job */ public function handle() { + $this->authorize(); + $command = "module:enable {$this->alias} {$this->company_id} {$this->locale}"; $result = Console::run($command); @@ -42,4 +47,14 @@ class EnableModule extends Job throw new \Exception($result); } } + + /** + * Determine if this action is applicable. + */ + public function authorize(): void + { + if (! $this->moduleExists($this->alias)) { + throw new \Exception("Module [{$this->alias}] not found."); + } + } } diff --git a/app/Jobs/Install/FinishUpdate.php b/app/Jobs/Install/FinishUpdate.php index f6c1505b4..642f916b6 100644 --- a/app/Jobs/Install/FinishUpdate.php +++ b/app/Jobs/Install/FinishUpdate.php @@ -5,12 +5,15 @@ namespace App\Jobs\Install; use App\Abstracts\Job; use App\Interfaces\Listener\ShouldUpdateAllCompanies; use App\Models\Module\Module; +use App\Traits\Modules; use App\Utilities\Console; use Illuminate\Filesystem\Filesystem; use Illuminate\Support\Facades\File; class FinishUpdate extends Job { + use Modules; + protected $alias; protected $new; @@ -37,6 +40,8 @@ class FinishUpdate extends Job public function handle(): void { + $this->authorize(); + $companies = $this->getCompanies(); foreach ($companies as $company) { @@ -52,6 +57,16 @@ class FinishUpdate extends Job } } + /** + * Determine if this action is applicable. + */ + public function authorize(): void + { + if (! $this->moduleExists($this->alias)) { + throw new \Exception("Module [{$this->alias}] not found."); + } + } + public function getCompanies() { if ($this->alias == 'core') { diff --git a/app/Jobs/Install/InstallModule.php b/app/Jobs/Install/InstallModule.php index 1d8e85b03..d316f2dfe 100644 --- a/app/Jobs/Install/InstallModule.php +++ b/app/Jobs/Install/InstallModule.php @@ -3,10 +3,13 @@ namespace App\Jobs\Install; use App\Abstracts\Job; +use App\Traits\Modules; use App\Utilities\Console; class InstallModule extends Job { + use Modules; + protected $alias; protected $company_id; @@ -34,6 +37,8 @@ class InstallModule extends Job */ public function handle() { + $this->authorize(); + $command = "module:install {$this->alias} {$this->company_id} {$this->locale}"; $result = Console::run($command); @@ -44,4 +49,14 @@ class InstallModule extends Job throw new \Exception($message); } } + + /** + * Determine if this action is applicable. + */ + public function authorize(): void + { + if (! $this->moduleExists($this->alias)) { + throw new \Exception("Module [{$this->alias}] not found."); + } + } } diff --git a/app/Jobs/Install/UninstallModule.php b/app/Jobs/Install/UninstallModule.php index 6cfe56d58..0bfa17239 100644 --- a/app/Jobs/Install/UninstallModule.php +++ b/app/Jobs/Install/UninstallModule.php @@ -3,10 +3,13 @@ namespace App\Jobs\Install; use App\Abstracts\Job; +use App\Traits\Modules; use App\Utilities\Console; class UninstallModule extends Job { + use Modules; + protected $alias; protected $company_id; @@ -34,6 +37,8 @@ class UninstallModule extends Job */ public function handle() { + $this->authorize(); + $command = "module:uninstall {$this->alias} {$this->company_id} {$this->locale}"; $result = Console::run($command); @@ -42,4 +47,14 @@ class UninstallModule extends Job throw new \Exception($result); } } + + /** + * Determine if this action is applicable. + */ + public function authorize(): void + { + if (! $this->moduleExists($this->alias)) { + throw new \Exception("Module [{$this->alias}] not found."); + } + } }