From f05430b69770d9c0ddbd943ba0ff08a6db7d9166 Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 6 Mar 2018 11:15:41 +0200 Subject: [PATCH 1/7] ability to customize admin middleware; fixes #67 --- src/BaseServiceProvider.php | 2 +- src/app/Http/Controllers/AdminController.php | 2 +- .../Http/Controllers/Auth/MyAccountController.php | 2 +- src/config/backpack/base.php | 7 +++++++ src/helpers.php | 15 +++++++++++++++ 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/BaseServiceProvider.php b/src/BaseServiceProvider.php index 5c4a5552..a4c86dfd 100644 --- a/src/BaseServiceProvider.php +++ b/src/BaseServiceProvider.php @@ -119,7 +119,7 @@ public function register() public function registerAdminMiddleware(Router $router) { - Route::aliasMiddleware('admin', \Backpack\Base\app\Http\Middleware\Admin::class); + Route::aliasMiddleware(config('backpack.base.middleware_key'), config('backpack.base.middleware_class')); } public function publishFiles() diff --git a/src/app/Http/Controllers/AdminController.php b/src/app/Http/Controllers/AdminController.php index 7ee790bd..940970ff 100644 --- a/src/app/Http/Controllers/AdminController.php +++ b/src/app/Http/Controllers/AdminController.php @@ -11,7 +11,7 @@ class AdminController extends Controller */ public function __construct() { - $this->middleware('admin'); + $this->middleware(backpack_middleware()); } /** diff --git a/src/app/Http/Controllers/Auth/MyAccountController.php b/src/app/Http/Controllers/Auth/MyAccountController.php index af08292d..ebc47ebf 100644 --- a/src/app/Http/Controllers/Auth/MyAccountController.php +++ b/src/app/Http/Controllers/Auth/MyAccountController.php @@ -15,7 +15,7 @@ class MyAccountController extends Controller public function __construct() { - $this->middleware('admin'); + $this->middleware(backpack_middleware()); } /** diff --git a/src/config/backpack/base.php b/src/config/backpack/base.php index bff9fee8..b72f8f68 100644 --- a/src/config/backpack/base.php +++ b/src/config/backpack/base.php @@ -81,6 +81,13 @@ // Fully qualified namespace of the User model 'user_model_fqn' => '\App\User', + // The class for the middleware that checks if the visitor is an admin + 'middleware_class' => \Backpack\Base\app\Http\Middleware\Admin::class, + + // Alias for that middleware + 'middleware_key' => 'admin', + // Note: It's recommended to use the backpack_middleware() helper everywhere, which pulls this key for you. + // What kind of avatar will you like to show to the user? // Default: gravatar (automatically use the gravatar for his email) // Other options: diff --git a/src/helpers.php b/src/helpers.php index 0444e472..10aa4e9a 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -42,3 +42,18 @@ function backpack_avatar_url($user) } } } + +if (!function_exists('backpack_middleware')) { + /** + * Return the key of the middleware used across Backpack. + * That middleware checks if the visitor is an admin. + * + * @param $path + * + * @return string + */ + function backpack_middleware() + { + return config('backpack.base.middleware_key', 'admin'); + } +} \ No newline at end of file From 4d4bd8c286da9cec8209d025c9a382bca396bda6 Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 6 Mar 2018 09:15:57 +0000 Subject: [PATCH 2/7] Apply fixes from StyleCI --- src/helpers.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers.php b/src/helpers.php index 10aa4e9a..184107c7 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -56,4 +56,4 @@ function backpack_middleware() { return config('backpack.base.middleware_key', 'admin'); } -} \ No newline at end of file +} From fc3a90732d285f0d499b481566a0ab30d508c7df Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 6 Mar 2018 11:22:16 +0200 Subject: [PATCH 3/7] renamed Admin middleware class to CheckIfAdmin --- src/app/Http/Middleware/{Admin.php => CheckIfAdmin.php} | 2 +- src/config/backpack/base.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/app/Http/Middleware/{Admin.php => CheckIfAdmin.php} (97%) diff --git a/src/app/Http/Middleware/Admin.php b/src/app/Http/Middleware/CheckIfAdmin.php similarity index 97% rename from src/app/Http/Middleware/Admin.php rename to src/app/Http/Middleware/CheckIfAdmin.php index 8a622c15..4be551cd 100644 --- a/src/app/Http/Middleware/Admin.php +++ b/src/app/Http/Middleware/CheckIfAdmin.php @@ -5,7 +5,7 @@ use Closure; use Illuminate\Support\Facades\Auth; -class Admin +class CheckIfAdmin { /** * Handle an incoming request. diff --git a/src/config/backpack/base.php b/src/config/backpack/base.php index b72f8f68..5be48cb6 100644 --- a/src/config/backpack/base.php +++ b/src/config/backpack/base.php @@ -82,7 +82,7 @@ 'user_model_fqn' => '\App\User', // The class for the middleware that checks if the visitor is an admin - 'middleware_class' => \Backpack\Base\app\Http\Middleware\Admin::class, + 'middleware_class' => \Backpack\Base\app\Http\Middleware\CheckIfAdmin::class, // Alias for that middleware 'middleware_key' => 'admin', From cb3b056f5deb5258e7ffd3231cb28a9888aa7b85 Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 6 Mar 2018 11:30:15 +0200 Subject: [PATCH 4/7] changed middleware to a middleware group, so that developers can include multiple classes --- src/BaseServiceProvider.php | 12 +++++++++++- src/config/backpack/base.php | 7 +++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/BaseServiceProvider.php b/src/BaseServiceProvider.php index a4c86dfd..bfe21a2c 100644 --- a/src/BaseServiceProvider.php +++ b/src/BaseServiceProvider.php @@ -119,7 +119,17 @@ public function register() public function registerAdminMiddleware(Router $router) { - Route::aliasMiddleware(config('backpack.base.middleware_key'), config('backpack.base.middleware_class')); + if (is_array(config('backpack.base.middleware_class'))) + { + foreach (config('backpack.base.middleware_class') as $class) + { + Route::pushMiddlewareToGroup(config('backpack.base.middleware_key'), $class); + } + } + else + { + Route::pushMiddlewareToGroup(config('backpack.base.middleware_key'), config('backpack.base.middleware_class')); + } } public function publishFiles() diff --git a/src/config/backpack/base.php b/src/config/backpack/base.php index 5be48cb6..2016b1fa 100644 --- a/src/config/backpack/base.php +++ b/src/config/backpack/base.php @@ -81,8 +81,11 @@ // Fully qualified namespace of the User model 'user_model_fqn' => '\App\User', - // The class for the middleware that checks if the visitor is an admin - 'middleware_class' => \Backpack\Base\app\Http\Middleware\CheckIfAdmin::class, + // The classes for the middleware to check if the visitor is an admin + // Can be a single class or an array of clases + 'middleware_class' => [ + \Backpack\Base\app\Http\Middleware\CheckIfAdmin::class, + ], // Alias for that middleware 'middleware_key' => 'admin', From e4850981f53807724439b8108364c6cbd25dbf95 Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 6 Mar 2018 09:30:28 +0000 Subject: [PATCH 5/7] Apply fixes from StyleCI --- src/BaseServiceProvider.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/BaseServiceProvider.php b/src/BaseServiceProvider.php index bfe21a2c..54d8a51e 100644 --- a/src/BaseServiceProvider.php +++ b/src/BaseServiceProvider.php @@ -119,15 +119,11 @@ public function register() public function registerAdminMiddleware(Router $router) { - if (is_array(config('backpack.base.middleware_class'))) - { - foreach (config('backpack.base.middleware_class') as $class) - { + if (is_array(config('backpack.base.middleware_class'))) { + foreach (config('backpack.base.middleware_class') as $class) { Route::pushMiddlewareToGroup(config('backpack.base.middleware_key'), $class); } - } - else - { + } else { Route::pushMiddlewareToGroup(config('backpack.base.middleware_key'), config('backpack.base.middleware_class')); } } From 06bf447aa0b9d8699c5ae1aef2732cbce08f7f8c Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 6 Mar 2018 11:37:53 +0200 Subject: [PATCH 6/7] cleaned up BaseServiceProvider --- src/BaseServiceProvider.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/BaseServiceProvider.php b/src/BaseServiceProvider.php index bfe21a2c..303bbfba 100644 --- a/src/BaseServiceProvider.php +++ b/src/BaseServiceProvider.php @@ -46,7 +46,7 @@ public function boot(\Illuminate\Routing\Router $router) __DIR__.'/config/backpack/base.php', 'backpack.base' ); - $this->registerAdminMiddleware($this->app->router); + $this->registerMiddlewareGroup($this->app->router); $this->setupRoutes($this->app->router); $this->publishFiles(); $this->loadHelpers(); @@ -117,18 +117,20 @@ public function register() $this->commands($this->commands); } - public function registerAdminMiddleware(Router $router) + public function registerMiddlewareGroup(Router $router) { - if (is_array(config('backpack.base.middleware_class'))) + $middleware_key = config('backpack.base.middleware_key'); + $middleware_class = config('backpack.base.middleware_class'); + + if (!is_array($middleware_class)) { - foreach (config('backpack.base.middleware_class') as $class) - { - Route::pushMiddlewareToGroup(config('backpack.base.middleware_key'), $class); - } + $router->pushMiddlewareToGroup($middleware_key, $middleware_class); + return; } - else + + foreach ($middleware_class as $middleware_class) { - Route::pushMiddlewareToGroup(config('backpack.base.middleware_key'), config('backpack.base.middleware_class')); + $router->pushMiddlewareToGroup($middleware_key, $middleware_class); } } From 459d57568904bd6e12919567c779d52fecd556eb Mon Sep 17 00:00:00 2001 From: Cristian Tabacitu Date: Tue, 6 Mar 2018 09:38:53 +0000 Subject: [PATCH 7/7] Apply fixes from StyleCI --- src/BaseServiceProvider.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/BaseServiceProvider.php b/src/BaseServiceProvider.php index 303bbfba..c97e53bc 100644 --- a/src/BaseServiceProvider.php +++ b/src/BaseServiceProvider.php @@ -122,14 +122,13 @@ public function registerMiddlewareGroup(Router $router) $middleware_key = config('backpack.base.middleware_key'); $middleware_class = config('backpack.base.middleware_class'); - if (!is_array($middleware_class)) - { + if (!is_array($middleware_class)) { $router->pushMiddlewareToGroup($middleware_key, $middleware_class); + return; } - foreach ($middleware_class as $middleware_class) - { + foreach ($middleware_class as $middleware_class) { $router->pushMiddlewareToGroup($middleware_key, $middleware_class); } }