feat:E-Sign 전자계약 서명 솔루션 MNG 프론트엔드 구현
- 컨트롤러 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>
This commit is contained in:
56
app/Http/Controllers/ESign/EsignController.php
Normal file
56
app/Http/Controllers/ESign/EsignController.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?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]);
|
||||
}
|
||||
}
|
||||
25
app/Http/Controllers/ESign/EsignPublicController.php
Normal file
25
app/Http/Controllers/ESign/EsignPublicController.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\ESign;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\View\View;
|
||||
|
||||
class EsignPublicController extends Controller
|
||||
{
|
||||
public function auth(string $token): View
|
||||
{
|
||||
return view('esign.sign.auth', ['token' => $token]);
|
||||
}
|
||||
|
||||
public function sign(string $token): View
|
||||
{
|
||||
return view('esign.sign.sign', ['token' => $token]);
|
||||
}
|
||||
|
||||
public function done(string $token): View
|
||||
{
|
||||
return view('esign.sign.done', ['token' => $token]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user