diff --git a/src/BaseServiceProvider.php b/src/BaseServiceProvider.php index 5c4a5552..c97e53bc 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,9 +117,20 @@ public function register() $this->commands($this->commands); } - public function registerAdminMiddleware(Router $router) + public function registerMiddlewareGroup(Router $router) { - Route::aliasMiddleware('admin', \Backpack\Base\app\Http\Middleware\Admin::class); + $middleware_key = config('backpack.base.middleware_key'); + $middleware_class = config('backpack.base.middleware_class'); + + if (!is_array($middleware_class)) { + $router->pushMiddlewareToGroup($middleware_key, $middleware_class); + + return; + } + + foreach ($middleware_class as $middleware_class) { + $router->pushMiddlewareToGroup($middleware_key, $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/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 bff9fee8..2016b1fa 100644 --- a/src/config/backpack/base.php +++ b/src/config/backpack/base.php @@ -81,6 +81,16 @@ // Fully qualified namespace of the User model 'user_model_fqn' => '\App\User', + // 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', + // 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..184107c7 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'); + } +}