Вы можете использовать промежуточное ПО на уровне маршрута следующим образом:
1) Создайте свое промежуточное ПО:
<?php
namespace App\Http\Middleware;
use App\Models\Company;
use Closure;
class CheckUserCompany
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @return mixed
*/
public function handle($request, Closure $next)
{
if(auth()->user()->company == $request->company) {
return $next(;
}
abort(404);
}
}
Возможно, вам здесь не нужна модель Company
, поскольку вы получение значения компании из переменной маршрута.
2) Зарегистрируйте ваше промежуточное ПО в App\Http\Kernel.php
:
protected $routeMiddleware = [
'company.check' = \App\Http\Middleware\CheckUserCompany::class
];
3) Тогда ваш маршрут должен выглядеть следующим образом:
Route::group(['prefix' => '/{company}', 'middleware' => 'company.check'], function() {
Route::get('/', 'CompaniesController@index')->name('company.index');
});