Skip to content

Commit 5c47232

Browse files
committed
Ensure query parameters are stripped and state is verifed when redirected from an alias domain
1 parent 6327bb0 commit 5c47232

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

lib/github-oauth.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -143,21 +143,25 @@ export function registerGitHubOAuth(server: FastifyInstance, config: Config) {
143143
// https://www.fastify.io/docs/latest/Hooks/
144144
//
145145
server.addHook<RoutePrams>("preValidation", async (req, res) => {
146-
if (req.cookies[cookieNames.state] && req.cookies[cookieNames.user]) {
147-
return
148-
}
146+
try {
147+
if (req.cookies[cookieNames.state] && req.cookies[cookieNames.user]) {
148+
if (req.query.state) {
149+
const state = retrieveState(req, res)
150+
return res.redirect(302, state.path)
151+
}
152+
return
153+
}
149154

150-
if (req.url === urls.localAuthorize) {
151-
return redirectToGitHub(req, res)
152-
}
155+
if (req.url === urls.localAuthorize) {
156+
return redirectToGitHub(req, res)
157+
}
153158

154-
const code = req.query.code
159+
const code = req.query.code
155160

156-
if (!code) {
157-
return initiateOAuth(req, res)
158-
}
161+
if (!code) {
162+
return initiateOAuth(req, res)
163+
}
159164

160-
try {
161165
const state = retrieveState(req, res)
162166
const tokenData = await getGitHubAccessToken(code)
163167
const user = await getGitHubUser(tokenData)

0 commit comments

Comments
 (0)