user(); if (! $user && $request->bearerToken()) { $user = User::query()->where('api_token', $request->bearerToken())->first(); } $role = mb_strtolower(trim((string) ($user?->role ?? ''))); $allowed = collect($roles) ->flatMap(fn ($role) => explode(',', $role)) ->map(fn ($role) => mb_strtolower(trim($role))) ->filter() ->values(); if (! $user || ! $allowed->contains($role)) { return response()->json(['message' => 'Akses tidak diizinkan.'], 403); } return $next($request); } }