Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #52 — GitHub OAuth was completely broken due to several bugs across the frontend and worker.
Root causes fixed
AuthCallback.vueused<q-page>inside WizardLayout (Win98Window)QPagerequires aQLayoutparent to inject layout context. Since WizardLayout uses a custom Win98Window component (notQLayout), the component threw during mount, preventingonMountedfrom firing and breaking the entire auth callback flow. Replaced with a plaindiv.No CSRF state parameter
The GitHub OAuth redirect had no
stateparameter, leaving the flow open to CSRF attacks.loginGithub()now generates acrypto.randomUUID()state, stores it insessionStorage, and includes it in the authorize URL.AuthCallback.vueverifies the returned state matches before accepting the token.Error code mismatch
Worker was sending
error=missing_codebut the frontend error map only handledno_code. Now aligned — worker sendsno_codeand the map includes it along with the newinvalid_statecode.GitLab callback had no error handling
exchangeGitlabCodeerrors were uncaught. Added try/catch with redirect to/login?error=no_token.Test plan
/reposstatein the callback URL → redirected to/loginwith "state mismatch" error/loginwith "no token" errorcodein worker callback → worker redirects to/login?error=no_code