@@ -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
155156func 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}
0 commit comments