Granting a permission to a user id with no account answers 500 instead of 404

Aperta Adatta ai principianti
#1,002 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
Mezza giornata
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
api, backend

Direzione di ricerca

Inizia dal gestore della route di concessione RBAC per POST /api/v1/rbac/users/{user_id}/grant e dalla ricerca dell'utente usata dalla route gemella dei permessi che restituisce già 404. Aggiungi la ricerca mancante prima dell'inserimento della concessione, in modo che un UUID inesistente restituisca 404 anziché un errore del database, e decidi se ignorare il user_id nel body o rifiutare una discrepanza rispetto all'ID nel percorso. Esegui i test dell'API RBAC relative alle concessioni agli utenti e ai permessi per confermare il nuovo 404 e il fatto che le concessioni esistenti continuino a funzionare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug post-launch
  • Sent: POST /api/v1/rbac/users/{user_id}/grant with a valid body, where {user_id} is a well-formed UUID that
    belongs to no account.
  • Comes back: 500 with the generic error body. The grant is inserted without looking the user up, and the database
    refuses the row. Nothing is saved.
  • Expected: 404 "User not found", as GET /api/v1/rbac/users/{user_id}/permissions answers for the same id.
  • Also: the body's required user_id is not used (the path's id is); either drop it or refuse a body whose
    user_id differs from the path, as the counter routes do (#95).
  • Reproduction (ADMIN):
    curl -X POST -H "Authorization: Bearer <ADMIN token>" -H 'Content-Type: application/json' \
         -d '{"user_id":"00000000-0000-0000-0000-000000000001","resource":"experiment","actions":["read"]}' \
         http://localhost:8000/api/v1/rbac/users/00000000-0000-0000-0000-000000000001/grant
    

Found by API fuzzing (a local run), reproduced by hand.

Lingua principale
Python
Stelle
0
Fork
4
Merge medio
5h 36m
PR unite (30g)
509

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Controlvar/controlvar

Tutte le issue di Controlvar/controlvar

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.