Skip to content

Commit 2b52932

Browse files
committed
fix: add code to other response methods
1 parent c716638 commit 2b52932

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

server/handlers/authorize.go

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -147,30 +147,31 @@ func AuthorizeHandler() gin.HandlerFunc {
147147
sessionKey = claims.LoginMethod + ":" + user.ID
148148
}
149149

150+
nonce := uuid.New().String()
151+
newSessionTokenData, newSessionToken, err := token.CreateSessionToken(user, nonce, claims.Roles, scope, claims.LoginMethod)
152+
if err != nil {
153+
log.Debug("CreateSessionToken failed: ", err)
154+
handleResponse(gc, responseMode, loginURL, redirectURI, loginError, http.StatusOK)
155+
return
156+
}
157+
158+
code := uuid.New().String()
159+
if err := memorystore.Provider.SetState(codeChallenge, code+"@"+newSessionToken); err != nil {
160+
log.Debug("SetState failed: ", err)
161+
handleResponse(gc, responseMode, loginURL, redirectURI, loginError, http.StatusOK)
162+
return
163+
}
164+
150165
// rollover the session for security
151166
go memorystore.Provider.DeleteUserSession(sessionKey, claims.Nonce)
152167
if responseType == constants.ResponseTypeCode {
153-
nonce := uuid.New().String()
154-
newSessionTokenData, newSessionToken, err := token.CreateSessionToken(user, nonce, claims.Roles, scope, claims.LoginMethod)
155-
if err != nil {
156-
log.Debug("CreateSessionToken failed: ", err)
157-
handleResponse(gc, responseMode, loginURL, redirectURI, loginError, http.StatusOK)
158-
return
159-
}
160-
161168
if err := memorystore.Provider.SetUserSession(sessionKey, constants.TokenTypeSessionToken+"_"+newSessionTokenData.Nonce, newSessionToken); err != nil {
162169
log.Debug("SetUserSession failed: ", err)
163170
handleResponse(gc, responseMode, loginURL, redirectURI, loginError, http.StatusOK)
164171
return
165172
}
166173

167174
cookie.SetSession(gc, newSessionToken)
168-
code := uuid.New().String()
169-
if err := memorystore.Provider.SetState(codeChallenge, code+"@"+newSessionToken); err != nil {
170-
log.Debug("SetState failed: ", err)
171-
handleResponse(gc, responseMode, loginURL, redirectURI, loginError, http.StatusOK)
172-
return
173-
}
174175

175176
// in case, response type is code and user is already logged in send the code and state
176177
// and cookie session will already be rolled over and set
@@ -249,6 +250,7 @@ func AuthorizeHandler() gin.HandlerFunc {
249250
"scope": scope,
250251
"token_type": "Bearer",
251252
"expires_in": expiresIn,
253+
"code": code,
252254
}
253255

254256
if authToken.RefreshToken != nil {

0 commit comments

Comments
 (0)