SearchOrganizations answers internal when filtering on name

Offen Anfängerfreundlich
#1,979 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
72/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
go, postgresql
Bereich
api, backend

Rechercherichtung

Beginne in internal/store/postgres/org_billing_repository.go bei addRQLFiltersInQuery, dessen Allowlist name nicht enthält, und vergleiche dann mit dem RQL-Schema zu AggregatedOrganization. Prüfe außerdem die Zuordnung von postgres.ErrBadInput im Handler, damit ein nicht unterstützter Filter invalid_argument zurückgibt. Fertig ist, wenn name-Filter funktionieren oder nicht unterstützte Felder invalid_argument mit einer klaren Meldung erhalten und kein internal zurückgegeben wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

What happens

AdminService.SearchOrganizations answers internal (HTTP 500) when the query filters on name.

Example request body:

{"query": {"filters": [{"name": "name", "operator": "eq", "string_value": "my-org"}]}}

The server log says addRQLFiltersInQuery: name is not supported in filters. Filtering on title or state works.

Why

  • name is a valid field of AggregatedOrganization (rql:"name=name"), so the request passes rql.ValidateQuery in the handler.
  • addRQLFiltersInQuery in internal/store/postgres/org_billing_repository.go has its own allow list. It has id, title, state, created_at, plan_name, subscription_state, subscription_cycle_end_at, plan_interval and payment_mode. It has no name, and it also leaves out other fields that the RQL schema allows, such as created_by, country, plan_id, updated_at and avatar.
  • The error it returns is a plain error. The handler only maps postgres.ErrBadInput to invalid_argument, so the client gets internal for what is really a bad request.

Expected

  • Either support filtering on name (and the other fields the RQL schema lists), or reject the unsupported fields in the handler as invalid_argument with a clear message.
  • In both cases an unsupported filter should not answer internal.

How it was found

Found while testing organization delete against a local sandbox. It has nothing to do with deletes, and it behaves the same on main.

Vorherrschende Sprache
Go
Sterne
344
Forks
48
Ø Merge
2 T. 15 Std.
Gemergte PRs (30 T.)
58

Entwicklungsumgebung

  • Enthält ein Dockerfile oder eine Docker-Compose-Datei
  • Hat eine Pull-Request-Vorlage
  • Kein Beitragsleitfaden

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus raystack/frontier

Alle Issues in raystack/frontier

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.