From ef91d8a10ac69712db4d41731f75b5a8874db5c9 Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Mon, 23 Oct 2023 11:59:35 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=AD=E3=83=B3=E3=83=88=E3=83=BC=E3=83=B3?= =?UTF-8?q?=E3=81=8B=E3=82=89=E3=81=AE=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9?= =?UTF-8?q?=E5=8F=97=E3=81=91=E5=9F=BA=E7=9B=A4=E3=82=92=E6=95=B4=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Web/Email/EmailSendController.php | 40 +++---------------- .../Controllers/Web/Email/EmailSendParam.php | 2 - .../Controllers/Web/FromKintoneController.php | 26 ++++++++++++ app/Http/Controllers/Web/WebController.php | 5 ++- app/Http/Kernel.php | 4 +- app/Http/Middleware/FromKintoneMiddleware.php | 34 ++++++++++++++++ app/Util/LoggingUtil.php | 4 ++ config/kintone.php | 10 +++++ config/mail.php | 2 - 9 files changed, 86 insertions(+), 41 deletions(-) create mode 100644 app/Http/Controllers/Web/FromKintoneController.php create mode 100644 app/Http/Middleware/FromKintoneMiddleware.php diff --git a/app/Http/Controllers/Web/Email/EmailSendController.php b/app/Http/Controllers/Web/Email/EmailSendController.php index 2a6738a..96863a6 100644 --- a/app/Http/Controllers/Web/Email/EmailSendController.php +++ b/app/Http/Controllers/Web/Email/EmailSendController.php @@ -9,19 +9,20 @@ use App\Email\Members\EntryPaymentComplete; use App\Email\Members\TerminateOrderApprove; use App\Email\Members\UserInfoUpdateOrderApprove; use App\Email\Members\VehicleInfoUpdateOrderApprove; -use App\Http\Controllers\Web\WebController; +use App\Http\Controllers\Web\FromKintoneController; use App\Kintone\Models\SeasonTicketContract; use App\Kintone\Models\SeasonTicketContractEntry; use App\Kintone\Models\TerminateApplication; use App\Kintone\Models\UserInfoUpdateApplication; use App\Kintone\Models\VehicleInfoUpdateApplication; use App\Logic\EmailManager; +use App\Util\LoggingUtil; use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use LogicException; -class EmailSendController extends WebController +class EmailSendController extends FromKintoneController { private BaseEmailer|null $email = null; @@ -46,9 +47,6 @@ class EmailSendController extends WebController protected function run(Request $request): JsonResponse { try { - // トークンチェック - $this->checkToken(); - // メール作成 $this->getEmail(); @@ -58,39 +56,13 @@ class EmailSendController extends WebController } $this->emailManager->confirm(); } catch (Exception $e) { - logger($e->getMessage()); - logger($e->getFile()); - logger($e->getLine()); - return $this->failed(); + LoggingUtil::debugException($e); + return $this->failedResponse(); } - return $this->success(); - } - - private function success() - { - return response()->json([ - 'result' => 'SUCCESS' - ]); - } - - private function failed() - { - return response()->json([ - 'result' => 'FAILED' - ]); + return $this->successResponse(); } - private function checkToken() - { - - $currectToken = config('mail.emailSendOrderToken'); - - if ($this->param->token !== $currectToken) { - logs()->warning("Email送信依頼トークン不正"); - throw new Exception("Email送信依頼トークン不正"); - } - } private function getEmail() { diff --git a/app/Http/Controllers/Web/Email/EmailSendParam.php b/app/Http/Controllers/Web/Email/EmailSendParam.php index 8d69f64..679b3f2 100644 --- a/app/Http/Controllers/Web/Email/EmailSendParam.php +++ b/app/Http/Controllers/Web/Email/EmailSendParam.php @@ -8,7 +8,6 @@ use Illuminate\Validation\Rules\Enum; /** * @property Email emailId - * @property ?string token * @property ?string seasonTicketContractEntryRecordNo * @property ?string applicationNo */ @@ -18,7 +17,6 @@ class EmailSendParam extends BaseParam { return [ 'email_id' => $this->enum([new Enum(Email::class)]), - 'token' => $this->str(true), 'season_ticket_contract_entry_record_no' => $this->str(true), 'application_no' => $this->str(true), ]; diff --git a/app/Http/Controllers/Web/FromKintoneController.php b/app/Http/Controllers/Web/FromKintoneController.php new file mode 100644 index 0000000..45a5291 --- /dev/null +++ b/app/Http/Controllers/Web/FromKintoneController.php @@ -0,0 +1,26 @@ +middleware('formKintone'); + } + + protected function makeResponse() + { + if ($this->resultCode === ResultCode::SECCESS) { + return response()->json([ + 'result' => 'SUCCESS' + ]); + } + return response()->json([ + 'result' => 'FAILED' + ]); + } +} diff --git a/app/Http/Controllers/Web/WebController.php b/app/Http/Controllers/Web/WebController.php index 3db6f31..733b281 100644 --- a/app/Http/Controllers/Web/WebController.php +++ b/app/Http/Controllers/Web/WebController.php @@ -84,7 +84,7 @@ abstract class WebController extends BaseController * * @var ResultCode|null */ - private ResultCode|null $resultCode = ResultCode::SECCESS; + protected ResultCode|null $resultCode = ResultCode::SECCESS; public function __construct() { @@ -160,6 +160,7 @@ abstract class WebController extends BaseController $validator->validate(); } catch (ValidationException $e) { logger("validate error", ['errors' => $e->errors(), 'request' => $request->all(), 'path' => $request->path()]); + logger($request->toArray()); return $this->validateErrorResponse($e); } @@ -277,7 +278,7 @@ abstract class WebController extends BaseController ->makeResponse(); } - private function makeResponse() + protected function makeResponse() { if ($this->resultCode === null) { abort(403); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index c34cdcf..3d5a213 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -40,7 +40,7 @@ class Kernel extends HttpKernel 'api' => [ // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, - \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', + \Illuminate\Routing\Middleware\ThrottleRequests::class . ':api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; @@ -63,5 +63,7 @@ class Kernel extends HttpKernel 'signed' => \App\Http\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + + 'formKintone' => \App\Http\Middleware\FromKintoneMiddleware::class, ]; } diff --git a/app/Http/Middleware/FromKintoneMiddleware.php b/app/Http/Middleware/FromKintoneMiddleware.php new file mode 100644 index 0000000..17119b2 --- /dev/null +++ b/app/Http/Middleware/FromKintoneMiddleware.php @@ -0,0 +1,34 @@ +wantsJson()) { + return response()->json([ + 'RESULT' => "UNAUTHORIZED", + ]); + } else { + abort(403); + } + } + + return $next($request); + } +} diff --git a/app/Util/LoggingUtil.php b/app/Util/LoggingUtil.php index d114762..b33b875 100644 --- a/app/Util/LoggingUtil.php +++ b/app/Util/LoggingUtil.php @@ -8,6 +8,10 @@ use Illuminate\Support\Facades\Log; class LoggingUtil { + public static function debugException(Exception $e, string|array $messages = []) + { + Log::debug(self::getExceptionContents($e, $messages)); + } public static function infoException(Exception $e, string|array $messages = []) { Log::error(self::getExceptionContents($e, $messages)); diff --git a/config/kintone.php b/config/kintone.php index 801490b..f987fd7 100644 --- a/config/kintone.php +++ b/config/kintone.php @@ -15,6 +15,16 @@ return [ 'host' => env("KINTONE_HOST", ""), + /* + |-------------------------------------------------------------------------- + | ホスト定義 + |-------------------------------------------------------------------------- + | + | キントーンAPIのホストを定義 + */ + + 'fromKintoneToken' => env("KINTONE_TOKEN", ""), + /* |-------------------------------------------------------------------------- | アプリケーション定義 diff --git a/config/mail.php b/config/mail.php index 9922b1b..1bcc31c 100644 --- a/config/mail.php +++ b/config/mail.php @@ -125,6 +125,4 @@ return [ 'developmentEmail' => env('MAIL_ADDRESS_DEVELOPMENT'), - 'emailSendOrderToken' => env('MAIL_SEND_ORDER_TOKEN'), - ];