checkUserPushPermission is checking the wrong user's permission to push

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

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

  • #1713 di @sankalpsthakur — chiusa senza merge

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
git, typescript
Ambito
backend, security

Direzione di ricerca

Leggi src/proxy/processors/push-action/parsePush.ts intorno alle righe 93-96 e segui come vengono valorizzati user e userEmail dell'azione. Conferma che i valori rappresentano l'utente che esegue il proxy push, anziché il committer dell'ultimo commit, senza usare action.commitData. Riproduci lo scenario di push descritto e verifica che checkUserPushPermission valuti i dettagli dell'utente che esegue il push.

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

Descrizione

bug tech-debt

Describe the bug
checkUserPushPermission is intended to check whether the user performing the push is allowed to do so. However, it is currently checking the permission of the committer of the last commit in the push in its current location, rather than the user pushing it into git proxy.

Commits in git are tagged with two users' details: the author (who created the commit and originally pushed it to a repo) and the committer (initially the same as the author, but changes whenever the commit is pushed to a different repository or branch but changes whenever a commit is created or modified (e.g., via git commit, git commit --amend, git rebase, git merge) - git push does NOT change the committer. When we process a push in git proxy, we do so using the original committer of the last commit rather than the user performing the push - which is not the intent of the check.

parsePush is extracting the committer and committerEmail from the last commit in the push and setting them as the user and userEmail in the action object:

https://github.com/finos/git-proxy/blob/6fb63d0597212e9e0056330d3a90df9997f2d505/src/proxy/processors/push-action/parsePush.ts#L93-L96

This is not the correct user information and needs to be corrected in parsePush, without using action.commitData.

To Reproduce

  1. Setup a project in Git proxy where you are allowed to contribute but no other user is
  2. Have a different user push a commit to a branch of the respository.
  3. Clone that branch yourself.
  4. While that different user's commit is the last one on that branch, push the branch to git proxy.
  5. checkUserPushPermission will reject the push as it will use the other user's information as the committer,

Expected behavior
parsePush should use the details of the user trying to push through the proxy as the user and userEmail values of the action (rather than the user that original pushed the last commit), ensuring that checkUserPushPermission checks the correct user's details.

Lingua principale
TypeScript
Stelle
263
Fork
185
Merge medio
2g 15h
PR unite (30g)
39

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 finos/git-proxy

Tutte le issue di finos/git-proxy

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.