From 045fb2fcf5429f2e09eaf6494848db572817c5bf Mon Sep 17 00:00:00 2001 From: Edward Yang Date: Thu, 4 Aug 2022 16:36:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=8F=92=E4=BB=B6=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=90=8E=E5=8F=B0=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Middleware/ShareViewData.php | 9 +++++--- .../Shop/Providers/PluginServiceProvider.php | 22 ++++++++++++++----- .../Controllers/MenusController.php | 8 ++++++- plugins/HeaderMenu/Routes/admin.php | 15 +++++++++++++ plugins/HeaderMenu/Routes/shop.php | 15 +++++++++++++ plugins/HeaderMenu/routes.php | 14 ------------ 6 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 plugins/HeaderMenu/Routes/admin.php create mode 100644 plugins/HeaderMenu/Routes/shop.php delete mode 100644 plugins/HeaderMenu/routes.php diff --git a/app/Http/Middleware/ShareViewData.php b/app/Http/Middleware/ShareViewData.php index fa4cff58..babc3f83 100644 --- a/app/Http/Middleware/ShareViewData.php +++ b/app/Http/Middleware/ShareViewData.php @@ -34,9 +34,12 @@ class ShareViewData if (is_admin()) { $adminLanguages = $this->handleAdminLanguages(); - $currentLanguage = current_user()->locale ?: 'en'; - View::share('admin_languages', $adminLanguages); - View::share('admin_language', collect($adminLanguages)->where('code', $currentLanguage)->first()); + $loggedAdminUser = current_user(); + if ($loggedAdminUser) { + $currentLanguage = $loggedAdminUser->locale ?: 'en'; + View::share('admin_languages', $adminLanguages); + View::share('admin_language', collect($adminLanguages)->where('code', $currentLanguage)->first()); + } } } diff --git a/beike/Shop/Providers/PluginServiceProvider.php b/beike/Shop/Providers/PluginServiceProvider.php index 7bb41a10..c4dd3b86 100644 --- a/beike/Shop/Providers/PluginServiceProvider.php +++ b/beike/Shop/Providers/PluginServiceProvider.php @@ -12,6 +12,7 @@ namespace Beike\Shop\Providers; use Beike\Plugin\Manager; +use Beike\Models\AdminUser; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; @@ -77,12 +78,23 @@ class PluginServiceProvider extends ServiceProvider private function loadRoutes($pluginCode) { $pluginBasePath = $this->pluginBasePath; - $routePath = "{$pluginBasePath}/{$pluginCode}/routes.php"; - if (file_exists($routePath)) { + $shopRoutePath = "{$pluginBasePath}/{$pluginCode}/Routes/shop.php"; + if (file_exists($shopRoutePath)) { Route::prefix('plugin') - ->middleware('web') - ->group(function () use ($routePath) { - $this->loadRoutesFrom($routePath); + ->middleware('shop') + ->group(function () use ($shopRoutePath) { + $this->loadRoutesFrom($shopRoutePath); + }); + } + + $adminRoutePath = "{$pluginBasePath}/{$pluginCode}/Routes/admin.php"; + if (file_exists($adminRoutePath)) { + $adminName = admin_name(); + Route::prefix($adminName) + ->name('admin.') + ->middleware(['admin', 'admin_auth:' . AdminUser::AUTH_GUARD]) + ->group(function () use ($adminRoutePath) { + $this->loadRoutesFrom($adminRoutePath); }); } } diff --git a/plugins/HeaderMenu/Controllers/MenusController.php b/plugins/HeaderMenu/Controllers/MenusController.php index f9f7ac41..927b0c83 100644 --- a/plugins/HeaderMenu/Controllers/MenusController.php +++ b/plugins/HeaderMenu/Controllers/MenusController.php @@ -12,11 +12,17 @@ namespace Plugin\HeaderMenu\Controllers; use Beike\Repositories\ProductRepo; -use Beike\Shop\Http\Controllers\Controller; use Beike\Shop\Http\Resources\ProductList; +use Beike\Shop\Http\Controllers\Controller; class MenusController extends Controller { + public function getRoutes(): string + { + return __METHOD__; + } + + public function latestProducts() { $products = ProductRepo::getBuilder()->orderByDesc('updated_at')->paginate(40); diff --git a/plugins/HeaderMenu/Routes/admin.php b/plugins/HeaderMenu/Routes/admin.php new file mode 100644 index 00000000..51c4d8db --- /dev/null +++ b/plugins/HeaderMenu/Routes/admin.php @@ -0,0 +1,15 @@ + + * @created 2022-08-04 16:17:53 + * @modified 2022-08-04 16:17:53 + */ + +use Illuminate\Support\Facades\Route; +use Plugin\HeaderMenu\Controllers\MenusController; + +Route::get('/routes', [MenusController::class, 'getRoutes'])->name('routes'); diff --git a/plugins/HeaderMenu/Routes/shop.php b/plugins/HeaderMenu/Routes/shop.php new file mode 100644 index 00000000..6eaf0ded --- /dev/null +++ b/plugins/HeaderMenu/Routes/shop.php @@ -0,0 +1,15 @@ + + * @created 2022-08-04 16:17:44 + * @modified 2022-08-04 16:17:44 + */ + +use Illuminate\Support\Facades\Route; +use Plugin\HeaderMenu\Controllers\MenusController; + +Route::get('/latest_products', [MenusController::class, 'latestProducts'])->name('plugin.latest_products'); diff --git a/plugins/HeaderMenu/routes.php b/plugins/HeaderMenu/routes.php deleted file mode 100644 index bab9d41c..00000000 --- a/plugins/HeaderMenu/routes.php +++ /dev/null @@ -1,14 +0,0 @@ - - * @created 2022-07-21 09:35:05 - * @modified 2022-07-21 09:35:05 - */ - -use Illuminate\Support\Facades\Route; - -Route::get('/latest_products', '\Plugin\HeaderMenu\Controllers\MenusController@latestProducts')->name('plugin.latest_products');