У меня есть этот маршрут:
Route::get('/conference/{id}/{slug?}/payment/registration/{registrationID}', [
'uses' => 'PaymentController@payment',
'as' =>'conferences.payment'
]);
Когда пользователь обращается к этому маршруту через «http://proj.test/conference/2/conference-title/payment/registration/1
», появляется многоэтапная форма, поэтому пользователь может ввести некоторые данные для оплаты регистрации, которую он сделал вконференция.
Работает нормально, когда пользователь обращается к "http://proj.test/conference/2/conference-title/payment/registration/1
", появляется многошаговая форма.
Проблема заключается в том, что, например, если другой пользователь с другим идентификатором в таблице пользователей, он также может получить доступ к «http://proj.test/conference/2/title/payment/registration/1
» и оплатить ту же регистрацию с идентификатором «1», которая принадлежит другому пользователю.
Таким образом, любой пользователь может оплатить любую регистрацию, но пользователь должен иметь возможность оплатить только регистрацию, которую он сделал.
Знаете ли вы, как решить эту проблему?
PaymentController:
class PaymentController extends Controller
{
public function payment($id, $slug, $regID)
{
$registrationTypeDetails = Registration::with(['participants.registration_type',
'participants' => function ($query) use ($regID) {
$query->select('id', 'registration_type_id', 'registration_id')->where('registration_id', $regID);
}
])->find($regID);
$registrationTypes = [];
return view('conferences.payment', compact('registrationTypeDetails', 'id', 'slug'));
}
}
$ registrationTypeDetails показывает:
Registration {#259 ▼
...
#relations: array:1 [▼
"participants" => Collection {#263 ▼
#items: array:2 [▼
0 => Participant {#270 ▼
...
#relations: array:1 [▼
"registration_type" => RegistrationType {#276 ▼
....
#attributes: array:12 [▼
"id" => 2
"name" => "free"
"price" => 0
"conference_id" => 2
]
...
}
]
...
}
1 => Participant {#272 ▼
...
#relations: array:1 [▼
"registration_type" => RegistrationType {#278 ▼
...
#attributes: array:12 [▼
"id" => 3
"name" => "paid"
"price" => 1
"conference_id," => 2
]
...
}
]
}
]
}
]
...
}