Смысл мидлвары в том, что он постоянно висит на роутах, т.е. каждый раз проверяет что Вам необходимо.
Вы один раз пишите мидлвару в которой ПОЛУЧАЕТЕ аргумент из роута и проверяете доступ к нему.
Например, у Вас есть роут /machine/{car_id} - получаем аргумент car_id и в мидлваре делаем проверку на существование в роуте этого аргумента и доступ к этому car_id текущего пользователя.
Подходит пользователь - просто возвращаем объект $request дальше, не проходит - делаем редирект.
Когда Вы перейдете на роут /machine/{car_id}/parts/id, то мидлвара возьмет аргумент car_id и проверит.