From ac7f6c9ad767fd452c8cd39b18be4aad6bb9656c Mon Sep 17 00:00:00 2001 From: "y.higashide" Date: Mon, 26 Jan 2026 17:14:12 +0900 Subject: [PATCH 1/5] =?UTF-8?q?resources/views/partials/mypage=5Fmenu.blad?= =?UTF-8?q?e.php=20=E3=82=92=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/views/partials/mypage_menu.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/partials/mypage_menu.blade.php b/resources/views/partials/mypage_menu.blade.php index 6f2847b..8835c63 100644 --- a/resources/views/partials/mypage_menu.blade.php +++ b/resources/views/partials/mypage_menu.blade.php @@ -25,7 +25,7 @@ $management_code = $management ? $management->management_code : ''; - + From 3a8e6c81f4e68bc104ffaa23eb6e582d083ee272 Mon Sep 17 00:00:00 2001 From: "y.higashide" Date: Mon, 26 Jan 2026 17:17:01 +0900 Subject: [PATCH 2/5] =?UTF-8?q?resources/views/layouts/app.blade.php=20?= =?UTF-8?q?=E3=82=92=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/views/layouts/app.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 28abea9..de412e7 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -40,7 +40,7 @@ @yield('content') {{-- フッター --}} - @include('partials.footer') + @include('partials.general_footer') From 22283f957ba79f660f6def4aee7bfa99247bc750 Mon Sep 17 00:00:00 2001 From: Yuka Higashide Date: Mon, 26 Jan 2026 17:21:10 +0900 Subject: [PATCH 3/5] =?UTF-8?q?=E9=A0=98=E5=8F=8E=E6=9B=B8=E5=AE=9B?= =?UTF-8?q?=E5=90=8D=E5=85=A5=E5=8A=9B=E7=94=BB=E9=9D=A2=E3=80=81=E9=A0=98?= =?UTF-8?q?=E5=8F=8E=E6=9B=B8PDF=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/ReceiptController.php | 33 +++++++++++----------- config/app.php | 10 +++++++ resources/views/receipt/pdf.blade.php | 9 ++++-- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/app/Http/Controllers/ReceiptController.php b/app/Http/Controllers/ReceiptController.php index 919023a..f7778a4 100644 --- a/app/Http/Controllers/ReceiptController.php +++ b/app/Http/Controllers/ReceiptController.php @@ -179,24 +179,23 @@ class ReceiptController extends Controller ->where('management_id', $management_id) ->first(); - $krgmStoragePath = config('app.krgm_storage_path'); - $linkPath = public_path('other-storage'); - if (!file_exists($krgmStoragePath)) { - \Log::error('KRGM path not found: ' . $krgmStoragePath); - abort(404, '画像パスが見つかりません。'); - } - if (!file_exists($linkPath)) { - $result = symlink($krgmStoragePath, $linkPath); - \Log::info('Symlink result: ' . ($result ? 'success' : 'failed')); - if (!$result) { - \Log::error('Symlink failed'); - abort(500, 'リンク作成失敗'); + // 社員側の社判画像を参照するため、シンボリックリンクを作成 (company_image_path が存在する場合のみ) + if (!empty($inv_setting->company_image_path)) { + $krgmStoragePath = config('app.krgm_storage_path'); + $linkPath = public_path('other-storage'); + if (!file_exists($krgmStoragePath)) { + \Log::error("[ERROR] " . now()->format('Y-m-d H:i:s') . " 社判画像保存フォルダ発見不可: " . $krgmStoragePath . ", user_id=" . $user_id . ", contract_id=" . $contract_id); + throw new \Exception(); + } + if (!file_exists($linkPath)) { + $result = symlink($krgmStoragePath, $linkPath); + \Log::info("[INFO] " . now()->format('Y-m-d H:i:s') . " 社判画像参照リンク作成。結果: " . ($result ? '成功' : '失敗') . ", user_id=" . $user_id . ", contract_id=" . $contract_id); + if (!$result) { + \Log::error("[ERROR] " . now()->format('Y-m-d H:i:s') . " 社判画像参照リンク作成失敗。user_id=" . $user_id . ", contract_id=" . $contract_id); + throw new \Exception(); + } } } - if (!file_exists($linkPath)) { - symlink($krgmStoragePath, $linkPath); - } - // ダウンロード回数をカウントアップ DB::table('inv_publish') @@ -244,7 +243,7 @@ class ReceiptController extends Controller ->header('Content-Disposition', 'attachment; filename="receipt_' . $contract_id . '.pdf"'); } catch (\Exception $e) { // PDF生成エラーを記録 - \Log::error("[ERROR] " . now()->format('Y-m-d H:i:s') . " PDFダウンロードエラー: user_id=" . $user_id . ", contract_id=" . $contract_id . ", error=" . $e->getMessage()); + \Log::error("[ERROR] " . now()->format('Y-m-d H:i:s') . " 領収書PDFダウンロードエラー: user_id=" . $user_id . ", contract_id=" . $contract_id . ", error=" . $e->getMessage()); abort(500, '領収書ダウンロードに失敗しました。'); } } diff --git a/config/app.php b/config/app.php index 0767204..02cfcbf 100644 --- a/config/app.php +++ b/config/app.php @@ -123,6 +123,16 @@ return [ 'store' => env('APP_MAINTENANCE_STORE', 'database'), ], + /* + |-------------------------------------------------------------------------- + | KRGM Storage Path + |-------------------------------------------------------------------------- + | + | This value is the path to the KRGM storage directory for accessing images + | from the other project via symbolic link. + | + */ + 'krgm_storage_path' => env('KRGM_STORAGE_PATH'), ]; diff --git a/resources/views/receipt/pdf.blade.php b/resources/views/receipt/pdf.blade.php index 7dfab4c..359bff4 100644 --- a/resources/views/receipt/pdf.blade.php +++ b/resources/views/receipt/pdf.blade.php @@ -122,9 +122,12 @@
{{ $inv_setting->t_name ?? '' }}
- {{ $inv_setting->zipcode ?? '' }}
- {{ $inv_setting->adrs ?? '' }}
- 適格事業者番号:{{ $inv_setting->t_number ?? '' }}
+ 〒{{ $inv_setting->zipcode }}
+ {{ $inv_setting->adrs }} + @if(!empty($inv_setting->bldg)) + {{ $inv_setting->bldg }} + @endif +
適格事業者番号:{{ $inv_setting->t_number ?? '' }}
@if(!empty($inv_setting->tel_num)) TEL:{{ $inv_setting->tel_num}}
@endif From 35ba5ccf7840a8f703bf97d251cf853d7256ec46 Mon Sep 17 00:00:00 2001 From: Yuka Higashide Date: Mon, 26 Jan 2026 17:31:58 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=E9=A0=98=E5=8F=8E=E6=9B=B8PDF=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/views/receipt/pdf.blade.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/resources/views/receipt/pdf.blade.php b/resources/views/receipt/pdf.blade.php index 359bff4..79fd52d 100644 --- a/resources/views/receipt/pdf.blade.php +++ b/resources/views/receipt/pdf.blade.php @@ -123,10 +123,7 @@
{{ $inv_setting->t_name ?? '' }}
〒{{ $inv_setting->zipcode }}
- {{ $inv_setting->adrs }} - @if(!empty($inv_setting->bldg)) - {{ $inv_setting->bldg }} - @endif + {{ $inv_setting->adrs }}@if(!empty($inv_setting->bldg)){{ $inv_setting->bldg }}@endif
適格事業者番号:{{ $inv_setting->t_number ?? '' }}
@if(!empty($inv_setting->tel_num)) TEL:{{ $inv_setting->tel_num}}
From c728744d9e23a8be7b3a01005354ba2ecb2b742c Mon Sep 17 00:00:00 2001 From: Yuka Higashide Date: Thu, 29 Jan 2026 15:12:56 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=E3=82=BB=E3=83=83=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E5=88=87=E3=82=8C=E6=99=82=E5=86=8D=E3=83=AD=E3=82=B0?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E5=87=A6=E7=90=86=E3=82=92Trait=E3=81=AB?= =?UTF-8?q?=E7=A7=BB=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/ReceiptController.php | 30 ++++++------ .../Controllers/RegularContractController.php | 11 +++-- app/Http/Middleware/ManagementMiddleware.php | 6 +-- app/Http/Traits/AuthenticatesUser.php | 48 +++++++++++++++++++ 4 files changed, 71 insertions(+), 24 deletions(-) create mode 100644 app/Http/Traits/AuthenticatesUser.php diff --git a/app/Http/Controllers/ReceiptController.php b/app/Http/Controllers/ReceiptController.php index f7778a4..93788aa 100644 --- a/app/Http/Controllers/ReceiptController.php +++ b/app/Http/Controllers/ReceiptController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Http\Controllers; +use App\Http\Traits\AuthenticatesUser; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\DB; @@ -14,6 +15,8 @@ use function base_path; class ReceiptController extends Controller { + use AuthenticatesUser; + /** * 領収書宛名入力画面を表示する。 * 契約IDに基づき、領収書宛名入力フォームを表示する。 @@ -24,13 +27,12 @@ class ReceiptController extends Controller */ public function input(string $management_code, string $contract_id): mixed { - $user_id = session('user_id'); - if (!$user_id) { - // 未認証アクセス(セッション切れ)を追跡するため、INFOログで記録 - \Log::info("[INFO] " . now()->format('Y-m-d H:i:s') . " 未認証ユーザーによるアクセス(セッション切れ): 領収書宛名入力画面アクセス"); - return redirect()->guest('/login'); + if ($redirect = $this->handleSessionExpired('領収書宛名入力', false)) { + return $redirect; } + // ヘッダー表示のためユーザー名取得 + $user_id = session('user_id'); $user_name = DB::table('user')->where('user_id', $user_id)->value('user_name'); $management = session('management'); @@ -70,13 +72,12 @@ class ReceiptController extends Controller */ public function issue(Request $request, string $management_code, string $contract_id): mixed { - $user_id = session('user_id'); - if (!$user_id) { - // 未認証アクセス(セッション切れ)を追跡するため、INFOログで記録 - \Log::info("[INFO] " . now()->format('Y-m-d H:i:s') . " 未認証ユーザーによるアクセス(セッション切れ): 領収書発行"); - return redirect('/login'); + if ($redirect = $this->handleSessionExpired('領収書宛名入力', false)) { + return $redirect; } + $user_id = session('user_id'); + // 既存レコードがある場合、再発行を促す $exists = DB::table('inv_publish')->where('contract_id', $contract_id)->exists(); if ($exists) { @@ -148,12 +149,11 @@ class ReceiptController extends Controller public function download(string $management_code, string $contract_id, bool $is_reissue = true): mixed { try { - $user_id = session('user_id'); - if (!$user_id) { - // 未認証アクセス(セッション切れ)を追跡するため、INFOログで記録 - \Log::info("[INFO] " . now()->format('Y-m-d H:i:s') . " 未認証ユーザーによるアクセス(セッション切れ): 領収書ダウンロード"); - return redirect('/login'); + if ($redirect = $this->handleSessionExpired('領収書ダウンロード', false)) { + return $redirect; } + + $user_id = session('user_id'); $management = session('management'); $management_id = $management->management_id; diff --git a/app/Http/Controllers/RegularContractController.php b/app/Http/Controllers/RegularContractController.php index 0cfe7ad..ad11744 100644 --- a/app/Http/Controllers/RegularContractController.php +++ b/app/Http/Controllers/RegularContractController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Http\Controllers; +use App\Http\Traits\AuthenticatesUser; use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; use Illuminate\Http\Response; @@ -12,6 +13,7 @@ use Carbon\Carbon; class RegularContractController extends Controller { + use AuthenticatesUser; public function showInfo(Request $request) { $user_id = session('user_id'); @@ -89,13 +91,12 @@ class RegularContractController extends Controller * @param Request $request 受信したHTTPリクエスト * @return mixed ビュー応答またはリダイレクト */ - $user_id = session('user_id'); - if (!$user_id) { - // 未認証アクセス(セッション切れ)を追跡するため、INFOログで記録 - \Log::info("[INFO] " . now()->format('Y-m-d H:i:s') . " 未認証ユーザーによるアクセス(セッション切れ): 定期契約履歴確認画面アクセス"); - return redirect()->guest('/login'); + if ($redirect = $this->handleSessionExpired('定期契約履歴確認')) { + return $redirect; } + // ヘッダー表示のためユーザー名取得 + $user_id = session('user_id'); $user_name = DB::table('user')->where('user_id', $user_id)->value('user_name'); // マルチテナント対応のため、運営元コード、IDを取得 diff --git a/app/Http/Middleware/ManagementMiddleware.php b/app/Http/Middleware/ManagementMiddleware.php index 10ad397..2053210 100644 --- a/app/Http/Middleware/ManagementMiddleware.php +++ b/app/Http/Middleware/ManagementMiddleware.php @@ -6,8 +6,6 @@ use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; -use Illuminate\Http\Response; -use Illuminate\Http\RedirectResponse; class ManagementMiddleware { @@ -17,10 +15,10 @@ class ManagementMiddleware * * @param Request $request 受信したHTTPリクエスト * @param Closure $next 次のミドルウェア処理 - * @return Response 次の処理のレスポンス + * @return mixed 次の処理のレスポンス * @throws \Symfony\Component\HttpKernel\Exception\HttpException 運営元コードが見つからない場合 */ - public function handle(Request $request, Closure $next): Response|RedirectResponse + public function handle(Request $request, Closure $next): mixed { // マルチテナント対応のため、URLの最初のセグメントを運営元コードとして扱う $path = $request->getPathInfo(); // パス全体を取得 diff --git a/app/Http/Traits/AuthenticatesUser.php b/app/Http/Traits/AuthenticatesUser.php new file mode 100644 index 0000000..5751db5 --- /dev/null +++ b/app/Http/Traits/AuthenticatesUser.php @@ -0,0 +1,48 @@ +management_code ?? request()->segment(1); + + if (!$managementCode) { + \Log::error("[ERROR] " . now()->format('Y-m-d H:i:s') . " 運営元取得失敗 url=" . request()->fullUrl()); + abort(404); + } + + // ログ記録 + $logMessage = "[INFO] " . now()->format('Y-m-d H:i:s') . " 未認証ユーザーアクセス(セッション切れ)"; + if ($screenName) { + $logMessage .= " {$screenName}画面"; + } + $logMessage .= " management_code=" . $managementCode; + \Log::info($logMessage); + + if ($saveIntended) { + // ログイン後に元の画面に戻る + return redirect()->guest(route('swo8_1', ['management_code' => $managementCode])); + } else { + // ログイン後はマイページトップへ + session()->forget('url.intended'); + return redirect()->route('swo8_1', ['management_code' => $managementCode]); + } + } +}