私はLaravel 7で作業しており、ユーザーが現在のユーザー契約を持っているかどうかを確認するミドルウェアを持っています。そうでない場合は、現在の契約を提供するフォームにリダイレクトします。オファーが受け入れられたら、最初に行っていた場所にリダイレクトする必要があります。コントローラーが受け入れを保存するときに元のルートにリダイレクトできるように、セッションに何かを入れる必要があると思います。
class VerifyAgreement
{
public function handle($request, Closure $next, $agreement)
{
if(UserAgreement::outOfDate($agreement)){
return redirect()->route('agreement.offer', $agreement);
}
return $next($request);
}
}
現在のリクエストを取得してリダイレクトに渡す必要があると思います。これにより、ユーザー契約コントローラーが何らかの方法でそれをキャプチャし、契約が保存されたらリダイレクトできるようになります...よくわかりません。
class AgreementController extends Controller
{
public function offer(Agreement $agreement)
{
return view('agreement.offer',['agreement' => $agreement]);
}
public function agree(Request $request)
{
$agreement_uuid = App\Agreement::findOrFail($request->agreement)->uuid;
UserAgreement::create(['user_uuid'=>auth()->user()->uuid, 'agreement_uuid'=>$agreement_uuid]);
//redirect something something something
}
}