Summary
Fleetbase\FleetOps\Http\Controllers\Internal\v1\SettingController::googleMapsApiKey() is declared with a string return type, but returns null when no Google Maps API key is configured:
protected function googleMapsApiKey(): string
{
return config('services.google_maps.api_key', env('GOOGLE_MAPS_API_KEY', ''));
}
services.google_maps.api_key exists in the config (populated from env('GOOGLE_MAPS_API_KEY')), so when the variable is not set its value is null and the '' default is never used. PHP throws:
TypeError: Fleetbase\FleetOps\Http\Controllers\Internal\v1\SettingController::googleMapsApiKey(): Return value must be of type string, null returned
Impact
GET /int/v1/fleet-ops/settings/map (getMapSettings()) returns 500 for every organization. The console requests it when entering Fleet-Ops, so the Orders route fails ("Error while processing route: console.fleet-ops.operations.orders.index.index Server Error") and the UI stays on "Loading orders". Fleet-Ops is unusable on any install that uses Leaflet and has no Google Maps key, which is the default setup.
Versions
Fleetbase v0.7.63 (fleetops v0.6.68).
Reproduction
- Self-hosted install with no
GOOGLE_MAPS_API_KEY and no Google Maps key saved in Admin → Settings → Services.
- Log in and open Fleet-Ops (or switch organization and open Fleet-Ops).
GET /int/v1/fleet-ops/settings/map → 500; the orders view never loads.
config('services.google_maps.api_key'); // null
app(SettingController::class)->getMapSettings(); // TypeError
Suggested fix
protected function googleMapsApiKey(): string
{
return (string) (config('services.google_maps.api_key') ?? env('GOOGLE_MAPS_API_KEY', ''));
}
Workaround
Set GOOGLE_MAPS_API_KEY="(empty)" on the API container: Laravel reads it as an empty string and the endpoint returns 200.
Summary
Fleetbase\FleetOps\Http\Controllers\Internal\v1\SettingController::googleMapsApiKey()is declared with astringreturn type, but returnsnullwhen no Google Maps API key is configured:services.google_maps.api_keyexists in the config (populated fromenv('GOOGLE_MAPS_API_KEY')), so when the variable is not set its value isnulland the''default is never used. PHP throws:Impact
GET /int/v1/fleet-ops/settings/map(getMapSettings()) returns 500 for every organization. The console requests it when entering Fleet-Ops, so the Orders route fails ("Error while processing route: console.fleet-ops.operations.orders.index.index Server Error") and the UI stays on "Loading orders". Fleet-Ops is unusable on any install that uses Leaflet and has no Google Maps key, which is the default setup.Versions
Fleetbase v0.7.63 (fleetops v0.6.68).
Reproduction
GOOGLE_MAPS_API_KEYand no Google Maps key saved in Admin → Settings → Services.GET /int/v1/fleet-ops/settings/map→ 500; the orders view never loads.Suggested fix
Workaround
Set
GOOGLE_MAPS_API_KEY="(empty)"on the API container: Laravel reads it as an empty string and the endpoint returns 200.