krgm.so-manager-dev.com/app/Http/Middleware/ShareMenuAccessData.php
OU.ZAIKOU 13d2ecfceb
All checks were successful
Deploy main / deploy (push) Successful in 25s
【ログイン】二重認証実装
2026-01-21 22:37:38 +09:00

91 lines
3.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use App\Services\MenuAccessService;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\DB;
/**
* メニューアクセス制御データをビューに共有する Middleware
*
* すべてのビューで $isSorin と $visibleCities が利用可能になります。
* また、nav bar に表示される ハード異常・タスク情報も同時に共有します。
*/
class ShareMenuAccessData
{
public function handle(Request $request, Closure $next)
{
$menuAccessService = app(MenuAccessService::class);
// メニュー関連データ
$viewData = [
'isSorin' => $menuAccessService->isSorin(),
'visibleCities' => $menuAccessService->visibleCities(),
];
// Nav bar に表示される ハード異常・タスク件数を取得
if (auth()->check()) {
// ハード異常que_class > 99かつステータスが未対応(1)または進行中(2)
$hardwareIssues = DB::table('operator_que as oq')
->leftJoin('user as u', 'oq.user_id', '=', 'u.user_id')
->leftJoin('park as p', 'oq.park_id', '=', 'p.park_id')
->select(
'oq.que_id', 'oq.que_class', 'oq.que_comment',
'oq.created_at', 'oq.updated_at', 'oq.que_status'
)
->where('oq.que_class', '>', 99)
->whereIn('oq.que_status', [1, 2])
->orderBy('oq.created_at', 'DESC')
->limit(5)
->get();
// タスクque_class < 99かつステータスが未対応(1)または進行中(2)
$taskIssues = DB::table('operator_que as oq')
->leftJoin('user as u', 'oq.user_id', '=', 'u.user_id')
->leftJoin('park as p', 'oq.park_id', '=', 'p.park_id')
->select(
'oq.que_id', 'oq.que_class', 'oq.que_comment',
'oq.created_at', 'oq.updated_at', 'oq.que_status'
)
->where('oq.que_class', '<', 99)
->whereIn('oq.que_status', [1, 2])
->orderBy('oq.created_at', 'DESC')
->limit(5)
->get();
// ハード異常・タスク件数計算
$hardCount = DB::table('operator_que')
->where('que_class', '>', 99)
->whereIn('que_status', [1, 2])
->count();
$taskCount = DB::table('operator_que')
->where('que_class', '<', 99)
->whereIn('que_status', [1, 2])
->count();
// 最新のハード異常・タスク日時
$hardLatest = $hardwareIssues->first()?->created_at;
$taskLatest = $taskIssues->first()?->created_at;
// Nav bar 関連データをマージ
$viewData = array_merge($viewData, [
'hardCount' => $hardCount,
'hardLatest' => $hardLatest,
'latestHards' => $hardwareIssues,
'taskCount' => $taskCount,
'taskLatest' => $taskLatest,
'latestTasks' => $taskIssues,
]);
}
// すべてのビューでこれらのデータが利用可能
View::share($viewData);
return $next($request);
}
}