SearchOrganizations answers internal when filtering on name

Ouverte Adaptée aux débutants
#1,979 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
72/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
go, postgresql
Domaine
api, backend

Piste de recherche

Commence dans internal/store/postgres/org_billing_repository.go au niveau de addRQLFiltersInQuery, dont la liste d'autorisation ne contient pas name, puis compare-la au schéma RQL sur AggregatedOrganization. Vérifie aussi le mapping de postgres.ErrBadInput dans le handler afin qu'un filtre non pris en charge renvoie invalid_argument. C'est terminé lorsque les filtres sur name fonctionnent, ou que les champs non pris en charge renvoient invalid_argument avec un message clair, et qu'aucun internal n'est renvoyé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.

Langage dominant
Go
Étoiles
344
Forks
48
Merge moyen
2 j 15 h
PR mergées (30 j)
58

Préparer son environnement

  • Fournit un Dockerfile ou un fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de raystack/frontier

Toutes les issues de raystack/frontier

Issues similaires

Plus d'issues Go

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.