Skip to content

Commit 5501dc4

Browse files
fix: recpie override for session revokes
1 parent 966c944 commit 5501dc4

File tree

3 files changed

+35
-9
lines changed

3 files changed

+35
-9
lines changed

recipe/session/getClaimValue_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"testing"
66

77
"github.com/stretchr/testify/assert"
8+
89
"github.com/supertokens/supertokens-golang/recipe/session/sessmodels"
910
"github.com/supertokens/supertokens-golang/supertokens"
1011
"github.com/supertokens/supertokens-golang/test/unittesting"

recipe/session/recipeImplementation.go

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"time"
2626

2727
"github.com/MicahParks/keyfunc/v2"
28+
2829
"github.com/supertokens/supertokens-golang/recipe/multitenancy/multitenancymodels"
2930
"github.com/supertokens/supertokens-golang/recipe/session/claims"
3031
"github.com/supertokens/supertokens-golang/recipe/session/errors"
@@ -153,7 +154,6 @@ func GetCombinedJWKS() (*keyfunc.JWKS, error) {
153154
}
154155

155156
func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.TypeNormalisedInput, appInfo supertokens.NormalisedAppinfo) sessmodels.RecipeInterface {
156-
var result sessmodels.RecipeInterface
157157

158158
createNewSession := func(userID string, accessTokenPayload map[string]interface{}, sessionDataInDatabase map[string]interface{}, disableAntiCsrf *bool, tenantId string, userContext supertokens.UserContext) (sessmodels.SessionContainer, error) {
159159
supertokens.LogDebugMessage("createNewSession: Started")
@@ -174,7 +174,13 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
174174

175175
frontToken := BuildFrontToken(sessionResponse.Session.UserID, sessionResponse.AccessToken.Expiry, parsedJWT.Payload)
176176
session := sessionResponse.Session
177-
sessionContainerInput := makeSessionContainerInput(sessionResponse.AccessToken.Token, session.Handle, session.UserID, session.TenantId, parsedJWT.Payload, result, frontToken, sessionResponse.AntiCsrfToken, nil, &sessionResponse.RefreshToken, true)
177+
178+
recipe, err := getRecipeInstanceOrThrowError()
179+
if err != nil {
180+
return nil, err
181+
}
182+
183+
sessionContainerInput := makeSessionContainerInput(sessionResponse.AccessToken.Token, session.Handle, session.UserID, session.TenantId, parsedJWT.Payload, recipe.RecipeImpl, frontToken, sessionResponse.AntiCsrfToken, nil, &sessionResponse.RefreshToken, true)
178184
return newSessionContainer(config, &sessionContainerInput), nil
179185
}
180186

@@ -283,7 +289,12 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
283289
frontToken := BuildFrontToken(response.Session.UserID, response.Session.ExpiryTime, payload)
284290
session := response.Session
285291

286-
sessionContainerInput := makeSessionContainerInput(accessTokenStringForSession, session.Handle, session.UserID, session.TenantId, payload, result, frontToken, antiCsrfToken, nil, nil, !accessTokenNil)
292+
recipeInstance, err := getRecipeInstanceOrThrowError()
293+
if err != nil {
294+
return nil, err
295+
}
296+
297+
sessionContainerInput := makeSessionContainerInput(accessTokenStringForSession, session.Handle, session.UserID, session.TenantId, payload, recipeInstance.RecipeImpl, frontToken, antiCsrfToken, nil, nil, !accessTokenNil)
287298
sessionContainer := newSessionContainer(config, &sessionContainerInput)
288299

289300
return sessionContainer, nil
@@ -314,7 +325,12 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
314325
session := response.Session
315326
frontToken := BuildFrontToken(session.UserID, response.AccessToken.Expiry, responseToken.Payload)
316327

317-
sessionContainerInput := makeSessionContainerInput(response.AccessToken.Token, session.Handle, session.UserID, session.TenantId, responseToken.Payload, result, frontToken, response.AntiCsrfToken, nil, &response.RefreshToken, true)
328+
recipeInstance, err := getRecipeInstanceOrThrowError()
329+
if err != nil {
330+
return nil, err
331+
}
332+
333+
sessionContainerInput := makeSessionContainerInput(response.AccessToken.Token, session.Handle, session.UserID, session.TenantId, responseToken.Payload, recipeInstance.RecipeImpl, frontToken, response.AntiCsrfToken, nil, &response.RefreshToken, true)
318334
sessionContainer := newSessionContainer(config, &sessionContainerInput)
319335

320336
return sessionContainer, nil
@@ -345,7 +361,12 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
345361
}
346362

347363
mergeIntoAccessTokenPayload := func(sessionHandle string, accessTokenPayloadUpdate map[string]interface{}, userContext supertokens.UserContext) (bool, error) {
348-
sessionInfo, err := (*result.GetSessionInformation)(sessionHandle, userContext)
364+
recipe, err := getRecipeInstanceOrThrowError()
365+
if err != nil {
366+
return false, err
367+
}
368+
369+
sessionInfo, err := (*recipe.RecipeImpl.GetSessionInformation)(sessionHandle, userContext)
349370
if err != nil {
350371
return false, err
351372
}
@@ -471,10 +492,16 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
471492
}
472493

473494
removeClaim := func(sessionHandle string, claim *claims.TypeSessionClaim, userContext supertokens.UserContext) (bool, error) {
495+
recipe, err := getRecipeInstanceOrThrowError()
496+
if err != nil {
497+
return false, err
498+
}
499+
474500
accessTokenPayloadUpdate := claim.RemoveFromPayloadByMerge_internal(map[string]interface{}{}, userContext)
475-
return (*result.MergeIntoAccessTokenPayload)(sessionHandle, accessTokenPayloadUpdate, userContext)
501+
return (*recipe.RecipeImpl.MergeIntoAccessTokenPayload)(sessionHandle, accessTokenPayloadUpdate, userContext)
476502
}
477-
result = sessmodels.RecipeInterface{
503+
504+
return sessmodels.RecipeInterface{
478505
CreateNewSession: &createNewSession,
479506
GetSession: &getSession,
480507
RefreshSession: &refreshSession,
@@ -496,5 +523,4 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
496523
RemoveClaim: &removeClaim,
497524
}
498525

499-
return result
500526
}

recipe/session/sessionRequestFunctions.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"strconv"
2323

2424
"github.com/supertokens/supertokens-golang/recipe/session/claims"
25-
2625
"github.com/supertokens/supertokens-golang/recipe/session/errors"
2726
"github.com/supertokens/supertokens-golang/recipe/session/sessmodels"
2827
"github.com/supertokens/supertokens-golang/supertokens"

0 commit comments

Comments
 (0)