Skip to content

settings/map returns 500: googleMapsApiKey() returns null for its string return type (no Google Maps key configured) #337

Description

@wespinosar

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

  1. Self-hosted install with no GOOGLE_MAPS_API_KEY and no Google Maps key saved in Admin → Settings → Services.
  2. Log in and open Fleet-Ops (or switch organization and open Fleet-Ops).
  3. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions