Преглед изворни кода

キントーンからのアクセス受け基盤を整備

master
sosuke.iwabuchi пре 2 година
родитељ
комит
ef91d8a10a
9 измењених фајлова са 86 додато и 41 уклоњено
  1. +6
    -34
      app/Http/Controllers/Web/Email/EmailSendController.php
  2. +0
    -2
      app/Http/Controllers/Web/Email/EmailSendParam.php
  3. +26
    -0
      app/Http/Controllers/Web/FromKintoneController.php
  4. +3
    -2
      app/Http/Controllers/Web/WebController.php
  5. +3
    -1
      app/Http/Kernel.php
  6. +34
    -0
      app/Http/Middleware/FromKintoneMiddleware.php
  7. +4
    -0
      app/Util/LoggingUtil.php
  8. +10
    -0
      config/kintone.php
  9. +0
    -2
      config/mail.php

+ 6
- 34
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()
{


+ 0
- 2
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),
];


+ 26
- 0
app/Http/Controllers/Web/FromKintoneController.php Прегледај датотеку

@@ -0,0 +1,26 @@
<?php

namespace App\Http\Controllers\Web;

use App\Codes\HTTPResultCode as ResultCode;

abstract class FromKintoneController extends WebController
{
public function __construct()
{
parent::__construct();
$this->middleware('formKintone');
}

protected function makeResponse()
{
if ($this->resultCode === ResultCode::SECCESS) {
return response()->json([
'result' => 'SUCCESS'
]);
}
return response()->json([
'result' => 'FAILED'
]);
}
}

+ 3
- 2
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);


+ 3
- 1
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,
];
}

+ 34
- 0
app/Http/Middleware/FromKintoneMiddleware.php Прегледај датотеку

@@ -0,0 +1,34 @@
<?php

namespace App\Http\Middleware;

use Closure;
use Exception;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class FromKintoneMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{

$currectToken = config('kintone.fromKintoneToken');

if ($request['token'] !== $currectToken) {
if ($request->wantsJson()) {
return response()->json([
'RESULT' => "UNAUTHORIZED",
]);
} else {
abort(403);
}
}

return $next($request);
}
}

+ 4
- 0
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));


+ 10
- 0
config/kintone.php Прегледај датотеку

@@ -15,6 +15,16 @@ return [

'host' => env("KINTONE_HOST", ""),

/*
|--------------------------------------------------------------------------
| ホスト定義
|--------------------------------------------------------------------------
|
| キントーンAPIのホストを定義
*/

'fromKintoneToken' => env("KINTONE_TOKEN", ""),

/*
|--------------------------------------------------------------------------
| アプリケーション定義


+ 0
- 2
config/mail.php Прегледај датотеку

@@ -125,6 +125,4 @@ return [

'developmentEmail' => env('MAIL_ADDRESS_DEVELOPMENT'),

'emailSendOrderToken' => env('MAIL_SEND_ORDER_TOKEN'),

];

Loading…
Откажи
Сачувај