route('home'); }); // ログイン関連ルート(ゲストユーザー専用) // Laravel 12変更点:ミドルウェアをルートで直接指定 Route::middleware('guest')->group(function () { // ログインフォーム表示 Route::get('login', [App\Http\Controllers\Auth\LoginController::class, 'showLoginForm'])->name('login'); // ログイン処理 Route::post('login', [App\Http\Controllers\Auth\LoginController::class, 'login']); }); // ログアウトルート(認証済みユーザー専用) Route::get('logout', [App\Http\Controllers\Auth\LoginController::class, 'logout'])->middleware('auth'); // パスワードリセット機能(一時的にリダイレクト - 後で実装予定) // Laravel 12移行時の一時対応:forgot_passwordルートエラー回避 Route::get('forgotPassword', function() { return redirect()->route('login')->with('info', 'パスワードリセット機能は現在準備中です。'); })->name('forgot_password'); // 保護されたルート(認証済みユーザー専用) // Laravel 12変更点:middleware()をコントローラーではなくルートで指定 Route::middleware('auth')->group(function () { // ダッシュボード(ホーム画面) Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); // Laravel 12 移行時の一時的な占位符路由 // 他の開発者が継続して開発できるように、エラーを防ぐための仮ルート定義 // 実装完了後は各機能の正式なルートに置き換える予定 // 利用者マスタ管理機能(仮ルート) Route::match(['get', 'post'], '/users', function() { return view('admin.placeholder', ['title' => '利用者マスタ', 'feature' => 'users']); })->name('users'); Route::match(['get', 'post'], '/users/add', function() { return view('admin.placeholder', ['title' => '利用者追加', 'feature' => 'users']); })->name('user_add'); Route::match(['get', 'post'], '/users/edit/{seq}', function($seq) { return view('admin.placeholder', ['title' => '利用者編集', 'feature' => 'users', 'id' => $seq]); })->name('user_edit')->where(['seq' => '[0-9]+']); Route::match(['get', 'post'], '/users/info/{seq}', function($seq) { return view('admin.placeholder', ['title' => '利用者詳細', 'feature' => 'users', 'id' => $seq]); })->name('user_info')->where(['seq' => '[0-9]+']); Route::match(['get', 'post'], '/users/delete', function() { return redirect()->route('users')->with('info', '削除機能は現在実装中です。'); })->name('users_delete'); Route::match(['get', 'post'], '/users/import', function() { return redirect()->route('users')->with('info', 'インポート機能は現在実装中です。'); })->name('users_import'); Route::get('/users/export', function() { return redirect()->route('users')->with('info', 'エクスポート機能は現在実装中です。'); })->name('users_export'); // その他の管理機能の仮ルート(必要に応じて追加) Route::match(['get', 'post'], '/regular_contracts', function() { return view('admin.placeholder', ['title' => '定期契約管理', 'feature' => 'regular_contracts']); })->name('regular_contracts'); Route::match(['get', 'post'], '/parks', function() { return view('admin.placeholder', ['title' => '駐輪場管理', 'feature' => 'parks']); })->name('parks'); Route::match(['get', 'post'], '/opes', function() { return view('admin.placeholder', ['title' => 'オペレータ管理', 'feature' => 'opes']); })->name('opes'); // 区画別利用率状況機能 // Laravel 12変更点:配列形式でのコントローラー指定 // Laravel 5.7: 'Admin\UsingStatusController@index' 形式を使用していた Route::get('/using_status', [App\Http\Controllers\Admin\UsingStatusController::class, 'index'])->name('using_status'); Route::post('/using_status', [App\Http\Controllers\Admin\UsingStatusController::class, 'index'])->name('using_status'); // 区画別利用率状況 - 将来拡張用API・エクスポート機能 // Laravel 12対応:RESTful API エンドポイント Route::get('/using_status/api', [App\Http\Controllers\Admin\UsingStatusController::class, 'apiGetUtilization'])->name('using_status.api'); Route::get('/using_status/export', [App\Http\Controllers\Admin\UsingStatusController::class, 'exportCsv'])->name('using_status.export'); //kin 2025/08/25 start // [東京都|〇〇駐輪場] 定期種別マスタ Route::match(['get', 'post'], '/regular_types', [RegularTypeController::class, 'list'])->name('regular_types'); Route::match(['get', 'post'], '/regular_types/add', [RegularTypeController::class, 'add'])->name('regular_types_add'); Route::match(['get', 'post'], '/regular_types/edit/{id}', [RegularTypeController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('regular_types_edit'); Route::match(['get', 'post'], '/regular_types/info/{id}', [RegularTypeController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('regular_types_info'); Route::match(['get', 'post'], '/regular_types/delete', [RegularTypeController::class, 'delete'])->name('regular_types_delete'); Route::match(['get', 'post'], '/regular_types/import', [RegularTypeController::class, 'import'])->name('regular_types_import'); Route::get('/regular_types/export', [RegularTypeController::class, 'export'])->name('regular_types_export'); // [東京都|〇〇駐輪場] 近傍駅マスタ Route::match(['get', 'post'], '/stations', [StationController::class, 'list'])->name('stations'); Route::match(['get', 'post'], '/stations/add', [StationController::class, 'add'])->name('stations_add'); Route::match(['get', 'post'], '/stations/edit/{id}', [StationController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('stations_edit'); Route::get('/stations/info/{id}', [StationController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('stations_info'); Route::match(['get', 'post'], '/stations/delete', [StationController::class, 'delete'])->name('stations_delete'); Route::post('/stations/import', [StationController::class, 'import'])->name('stations_import'); Route::get('/stations/export', [StationController::class, 'export'])->name('stations_export'); // [東京都|〇〇駐輪場] 利用契約マスタ Route::match(['get', 'post'], '/terms', [TermsController::class, 'list'])->name('terms'); Route::match(['get', 'post'], '/terms/add', [TermsController::class, 'add'])->name('terms_add'); Route::match(['get', 'post'], '/terms/edit/{id}', [TermsController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('terms_edit'); Route::get('/terms/info/{id}', [TermsController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('terms_info'); Route::match(['get', 'post'], '/terms/delete', [TermsController::class, 'delete'])->name('terms_delete'); Route::post('/terms/import', [TermsController::class, 'import'])->name('terms_import'); Route::get('/terms/export', [TermsController::class, 'export'])->name('terms_export'); // [東京都|〇〇駐輪場] 管轄駐輪場マスタ Route::match(['get', 'post'], '/jurisdiction_parkings', [JurisdictionParkingController::class, 'list'])->name('jurisdiction_parkings'); Route::match(['get', 'post'], '/jurisdiction_parkings/add', [JurisdictionParkingController::class, 'add'])->name('jurisdiction_parkings_add'); Route::match(['get', 'post'], '/jurisdiction_parkings/edit/{id}', [JurisdictionParkingController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('jurisdiction_parkings_edit'); Route::get('/jurisdiction_parkings/info/{id}', [JurisdictionParkingController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('jurisdiction_parkings_info'); Route::match(['get', 'post'], '/jurisdiction_parkings/delete', [JurisdictionParkingController::class, 'delete'])->name('jurisdiction_parkings_delete'); Route::post('/jurisdiction_parkings/import', [JurisdictionParkingController::class, 'import'])->name('jurisdiction_parkings_import'); Route::get('/jurisdiction_parkings/export', [JurisdictionParkingController::class, 'export'])->name('jurisdiction_parkings_export'); // [東京都|〇〇駐輪場] シール印刷範囲マスタ Route::match(['get', 'post'], '/print_areas', [PrintAreaController::class, 'list'])->name('print_areas'); Route::match(['get', 'post'], '/print_areas/add', [PrintAreaController::class, 'add'])->name('print_areas_add'); Route::match(['get', 'post'], '/print_areas/edit/{id}', [PrintAreaController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('print_areas_edit'); Route::get('/print_areas/info/{id}', [PrintAreaController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('print_areas_info'); Route::match(['get', 'post'], '/print_areas/delete', [PrintAreaController::class, 'delete'])->name('print_areas_delete'); Route::post('/print_areas/import', [PrintAreaController::class, 'import'])->name('print_areas_import'); Route::get('/print_areas/export', [PrintAreaController::class, 'export'])->name('print_areas_export'); //[東京都|〇〇駐輪場] 契約許容市区マスタ Route::match(['get', 'post'], '/contract_allowable_cities', [ContractAllowableCityController::class, 'list'])->name('contract_allowable_cities'); Route::match(['get', 'post'], '/contract_allowable_cities/add', [ContractAllowableCityController::class, 'add'])->name('contract_allowable_cities_add'); Route::match(['get', 'post'], '/contract_allowable_cities/edit/{id}', [ContractAllowableCityController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('contract_allowable_cities_edit'); Route::get('/contract_allowable_cities/info/{id}', [ContractAllowableCityController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('contract_allowable_cities_info'); Route::match(['get', 'post'], '/contract_allowable_cities/delete', [ContractAllowableCityController::class, 'delete'])->name('contract_allowable_cities_delete'); Route::post('/contract_allowable_cities/import', [ContractAllowableCityController::class, 'import'])->name('contract_allowable_cities_import'); Route::get('/contract_allowable_cities/export', [ContractAllowableCityController::class, 'export'])->name('contract_allowable_cities_export'); //[東京都|〇〇駐輪場] 管駐輪場管理者マスタ Route::match(['get', 'post'], '/managers', [ManagerController::class, 'list'])->name('managers'); Route::match(['get', 'post'], '/managers/add', [ManagerController::class, 'add'])->name('managers_add'); Route::match(['get', 'post'], '/managers/edit/{id}', [ManagerController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('managers_edit'); Route::get('/managers/info/{id}', [ManagerController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('managers_info'); Route::match(['get', 'post'], '/managers/delete', [ManagerController::class, 'delete'])->name('managers_delete'); Route::post('/managers/import', [ManagerController::class, 'import'])->name('managers_import'); Route::get('/managers/export', [ManagerController::class, 'export'])->name('managers_export'); // [東京都|〇〇駐輪場] 消費税マスタ Route::match(['get', 'post'], '/tax', [TaxController::class, 'list'])->name('tax'); Route::match(['get', 'post'], '/tax/add', [TaxController::class, 'add'])->name('tax_add'); Route::match(['get', 'post'], '/tax/edit/{id}', [TaxController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('tax_edit'); Route::get('/tax/info/{id}', [TaxController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('tax_info'); Route::match(['get', 'post'], '/tax/delete', [TaxController::class, 'delete'])->name('tax_delete'); Route::post('/tax/import', [TaxController::class, 'import'])->name('tax_import'); Route::get('/tax/export', [TaxController::class, 'export'])->name('tax_export'); // [東京都|〇〇駐輪場] 決済情報マスタ Route::match(['get', 'post'], '/payments', [PaymentController::class, 'list'])->name('payments'); Route::match(['get', 'post'], '/payments/add', [PaymentController::class, 'add'])->name('payments_add'); Route::match(['get', 'post'], '/payments/edit/{id}', [PaymentController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('payments_edit'); Route::get('/payments/info/{id}', [PaymentController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('payments_info'); Route::match(['get', 'post'], '/payments/delete', [PaymentController::class, 'delete'])->name('payments_delete'); Route::post('/payments/import', [PaymentController::class, 'import'])->name('payments_import'); Route::get('/payments/export', [PaymentController::class, 'export'])->name('payments_export'); // [東京都|〇〇駐輪場] 決済トランザクション Route::match(['get', 'post'], '/settlement_transactions', [SettlementTransactionController::class, 'list'])->name('settlement_transactions'); Route::match(['get', 'post'], '/settlement_transactions/add', [SettlementTransactionController::class, 'add'])->name('settlement_transactions_add'); Route::match(['get', 'post'], '/settlement_transactions/edit/{id}', [SettlementTransactionController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('settlement_transactions_edit'); Route::get('/settlement_transactions/info/{id}', [SettlementTransactionController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('settlement_transactions_info'); Route::match(['get', 'post'], '/settlement_transactions/delete', [SettlementTransactionController::class, 'delete'])->name('settlement_transactions_delete'); Route::post('/settlement_transactions/import', [SettlementTransactionController::class, 'import'])->name('settlement_transactions_import'); Route::get('/settlement_transactions/export', [SettlementTransactionController::class, 'export'])->name('settlement_transactions_export'); // [東京都|〇〇駐輪場] オペレーターマスタ Route::match(['get', 'post'], '/opes', [OpeController::class, 'list'])->name('opes'); Route::match(['get', 'post'], '/opes/add', [OpeController::class, 'add'])->name('opes_add'); Route::match(['get', 'post'], '/opes/edit/{id}', [OpeController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('opes_edit'); Route::get('/opes/info/{id}', [OpeController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('opes_info'); Route::match(['get', 'post'], '/opes/delete', [OpeController::class, 'delete'])->name('opes_delete'); Route::post('/opes/import', [OpeController::class, 'import'])->name('opes_import'); Route::get('/opes/export', [OpeController::class, 'export'])->name('opes_export'); // [東京都|〇〇駐輪場] デバイス管理マスタ Route::match(['get', 'post'], '/devices', [DeviceController::class, 'list'])->name('devices'); Route::match(['get', 'post'], '/devices/add', [DeviceController::class, 'add'])->name('devices_add'); Route::match(['get', 'post'], '/devices/edit/{id}', [DeviceController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('devices_edit'); Route::get('/devices/info/{id}', [DeviceController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('devices_info'); Route::match(['get', 'post'], '/devices/delete', [DeviceController::class, 'delete'])->name('devices_delete'); Route::post('/devices/import', [DeviceController::class, 'import'])->name('devices_import'); // [東京都|〇〇駐輪場] オペレーターキュー Route::match(['get', 'post'], '/operator_ques', [OperatorQueController::class, 'list'])->name('operator_ques'); Route::match(['get', 'post'], '/operator_ques/add', [OperatorQueController::class, 'add'])->name('operator_ques_add'); Route::match(['get', 'post'], '/operator_ques/edit/{id}', [OperatorQueController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('operator_ques_edit'); Route::get('/operator_ques/info/{id}', [OperatorQueController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('operator_ques_info'); Route::match(['get', 'post'], '/operator_ques/delete', [OperatorQueController::class, 'delete'])->name('operator_ques_delete'); Route::post('/operator_ques/import', [OperatorQueController::class, 'import'])->name('operator_ques_import'); Route::get('/operator_ques/export', [OperatorQueController::class, 'export'])->name('operator_ques_export'); // [東京都|〇〇駐輪場] 設定マスタ Route::match(['get', 'post'], '/settings', [SettingController::class, 'list'])->name('settings'); Route::match(['get', 'post'], '/settings/add', [SettingController::class, 'add'])->name('settings_add'); Route::match(['get', 'post'], '/settings/edit/{id}', [SettingController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('settings_edit'); Route::get('/settings/info/{id}', [SettingController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('settings_info'); Route::match(['get', 'post'], '/settings/delete', [SettingController::class, 'delete'])->name('settings_delete'); // [東京都|〇〇駐輪場] メール送信テンプレートマスタ Route::match(['get', 'post'], '/mail_templates', [MailTemplateController::class, 'list'])->name('mail_templates'); Route::match(['get', 'post'], '/mail_templates/add', [MailTemplateController::class, 'add'])->name('mail_templates_add'); Route::match(['get', 'post'], '/mail_templates/edit/{id}', [MailTemplateController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('mail_templates_edit'); Route::get('/mail_templates/info/{id}', [MailTemplateController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('mail_templates_info'); Route::match(['get', 'post'], '/mail_templates/delete', [MailTemplateController::class, 'delete'])->name('mail_templates_delete'); Route::post('/mail_templates/import', [MailTemplateController::class, 'import'])->name('mail_templates_import'); Route::get('/mail_templates/export', [MailTemplateController::class, 'export'])->name('mail_templates_export'); // [東京都|〇〇駐輪場] インボイス設定マスタ Route::match(['get', 'post'], '/inv_settings', [InvSettingController::class, 'form'])->name('inv_settings'); Route::post('/inv_settings/save', [InvSettingController::class, 'save'])->name('inv_settings_save'); // [東京都|〇〇駐輪場] ゾーンマスタ Route::match(['get', 'post'], '/zones', [ZoneController::class, 'list'])->name('zones'); Route::match(['get', 'post'], '/zones/add', [ZoneController::class, 'add'])->name('zones_add'); Route::match(['get', 'post'], '/zones/edit/{id}', [ZoneController::class, 'edit']) ->where(['id' => '[0-9]+']) ->name('zones_edit'); Route::match(['get', 'post'], '/zones/info/{id}', [ZoneController::class, 'info']) ->where(['id' => '[0-9]+']) ->name('zones_info'); Route::match(['get', 'post'], '/zones/delete', [ZoneController::class, 'delete']) ->name('zones_delete'); //kin 2025/08/29 end });