- 컨트롤러 2개 (EsignController, EsignPublicController) - 뷰 8개 (dashboard, create, detail, fields, send, sign/auth, sign/sign, sign/done) - React 하이브리드 방식 (기존 Finance 패턴) - 라우트 추가 (인증 esign/* + 공개 esign/sign/*) - PDF.js 기반 서명 위치 설정 - signature_pad 기반 전자서명 입력 - OTP 본인인증 플로우 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
57 lines
1.6 KiB
PHP
57 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\ESign;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
class EsignController extends Controller
|
|
{
|
|
public function dashboard(Request $request): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('esign.dashboard'));
|
|
}
|
|
|
|
return view('esign.dashboard');
|
|
}
|
|
|
|
public function create(Request $request): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('esign.create'));
|
|
}
|
|
|
|
return view('esign.create');
|
|
}
|
|
|
|
public function detail(Request $request, int $id): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('esign.detail', $id));
|
|
}
|
|
|
|
return view('esign.detail', ['contractId' => $id]);
|
|
}
|
|
|
|
public function fields(Request $request, int $id): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('esign.fields', $id));
|
|
}
|
|
|
|
return view('esign.fields', ['contractId' => $id]);
|
|
}
|
|
|
|
public function send(Request $request, int $id): View|Response
|
|
{
|
|
if ($request->header('HX-Request')) {
|
|
return response('', 200)->header('HX-Redirect', route('esign.send', $id));
|
|
}
|
|
|
|
return view('esign.send', ['contractId' => $id]);
|
|
}
|
|
}
|