From 4947caed396e114b273069c92c6a3a881c582cf8 Mon Sep 17 00:00:00 2001 From: Yuka Higashide Date: Fri, 16 Jan 2026 15:19:40 +0900 Subject: [PATCH] =?UTF-8?q?=E9=81=8B=E5=96=B6=E5=85=83=E3=81=94=E3=81=A8?= =?UTF-8?q?=E3=81=AE=E3=83=9E=E3=83=AB=E3=83=81=E3=83=86=E3=83=8A=E3=83=B3?= =?UTF-8?q?=E3=83=88=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/LoginController.php | 2 +- app/Http/Middleware/ManagementMiddleware.php | 52 +++++++ ...6_01_16_144753_create_management_table.php | 34 +++++ .../views/partials/mypage_menu.blade.php | 18 ++- routes/web.php | 139 +++++++++--------- 5 files changed, 167 insertions(+), 78 deletions(-) create mode 100644 app/Http/Middleware/ManagementMiddleware.php create mode 100644 database/migrations/2026_01_16_144753_create_management_table.php diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php index c067cc4..13e7006 100644 --- a/app/Http/Controllers/LoginController.php +++ b/app/Http/Controllers/LoginController.php @@ -24,6 +24,6 @@ class LoginController extends Controller // セッションにユーザ情報を保存してマイページトップへ遷移 session(['user_id' => $existingMember->user_id]); - return redirect()->route('mypage'); + return redirect()->intended(route('mypage')); } } \ No newline at end of file diff --git a/app/Http/Middleware/ManagementMiddleware.php b/app/Http/Middleware/ManagementMiddleware.php new file mode 100644 index 0000000..fba3d05 --- /dev/null +++ b/app/Http/Middleware/ManagementMiddleware.php @@ -0,0 +1,52 @@ +getPathInfo(); // パス全体を取得 + $segments = explode('/', trim($path, '/')); // '/'で分割 + $managementCode = $segments[0] ?? null; // 最初の部分を運営元コードとする + + if (!$managementCode) { + // 不正アクセス防止のため、エラーログでシステム例外を記録 + Log::error("[ERROR] " . now()->format('Y-m-d H:i:s') . " 運営元コードが見つからない: " . $request->getPathInfo()); + abort(404, '運営元コードが見つかりません'); + } + + // 運営元コードの正当性検証のため、DBで存在確認 + $management = DB::table('management')->where('management_code', $managementCode)->first(); + + if (!$management) { + // 不正アクセス防止のため、エラーログでシステム例外を記録 + Log::error("[ERROR] " . now()->format('Y-m-d H:i:s') . " 運営元が見つからない: " . $managementCode); + abort(404, '運営元が見つかりません'); + } + + // システム操作追跡のため、成功した運営元取得を記録 + Log::info("[INFO] " . now()->format('Y-m-d H:i:s') . " 運営元コード取得成功: " . $managementCode); + + // 運営元情報を他の処理で利用可能にするため、セッションに保存 + session(['management' => $management]); + + return $next($request); + } +} diff --git a/database/migrations/2026_01_16_144753_create_management_table.php b/database/migrations/2026_01_16_144753_create_management_table.php new file mode 100644 index 0000000..3fcc010 --- /dev/null +++ b/database/migrations/2026_01_16_144753_create_management_table.php @@ -0,0 +1,34 @@ +id('management_id'); // 主キー、AUTO_INCREMENT, NOT NULL + $table->string('management_name', 255); // varchar(255), NOT NULL + $table->string('management_code', 10)->unique(); // varchar(10), NOT NULL, UNIQUE + $table->boolean('municipality_flag')->nullable(); // tinyint(1), NULL + $table->boolean('government_approval_required')->nullable(); // tinyint(1), NULL + $table->boolean('valid_flag '); // tinyint(1) + $table->timestamps(); // created_at, updated_at (datetime), NOT NULL + $table->unsignedInteger('operator_id')->nullable(); // int(10), NULL + $table->foreign('operator_id')->references('ope_id')->on('ope'); // 外部キー(opeテーブルのope_idを参照) + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('management'); + } +}; diff --git a/resources/views/partials/mypage_menu.blade.php b/resources/views/partials/mypage_menu.blade.php index 26d6985..6f2847b 100644 --- a/resources/views/partials/mypage_menu.blade.php +++ b/resources/views/partials/mypage_menu.blade.php @@ -1,5 +1,7 @@ @php if (!isset($active_menu)) $active_menu = ''; +$management = session('management'); +$management_code = $management ? $management->management_code : ''; @endphp