@@ -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 }
@@ -433,7 +454,12 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
433454 }
434455
435456 fetchAndSetClaim := func (sessionHandle string , claim * claims.TypeSessionClaim , userContext supertokens.UserContext ) (bool , error ) {
436- sessionInfo , err := (* result .GetSessionInformation )(sessionHandle , userContext )
457+ recipe , err := getRecipeInstanceOrThrowError ()
458+ if err != nil {
459+ return false , err
460+ }
461+
462+ sessionInfo , err := (* recipe .RecipeImpl .GetSessionInformation )(sessionHandle , userContext )
437463 if err != nil {
438464 return false , err
439465 }
@@ -444,16 +470,24 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
444470 if err != nil {
445471 return false , err
446472 }
447- return (* result .MergeIntoAccessTokenPayload )(sessionHandle , accessTokenPayloadUpdate , userContext )
473+ return (* recipe . RecipeImpl .MergeIntoAccessTokenPayload )(sessionHandle , accessTokenPayloadUpdate , userContext )
448474 }
449475
450476 setClaimValue := func (sessionHandle string , claim * claims.TypeSessionClaim , value interface {}, userContext supertokens.UserContext ) (bool , error ) {
477+ recipe , err := getRecipeInstanceOrThrowError ()
478+ if err != nil {
479+ return false , err
480+ }
451481 accessTokenPayloadUpdate := claim .AddToPayload_internal (map [string ]interface {}{}, value , userContext )
452- return (* result .MergeIntoAccessTokenPayload )(sessionHandle , accessTokenPayloadUpdate , userContext )
482+ return (* recipe . RecipeImpl .MergeIntoAccessTokenPayload )(sessionHandle , accessTokenPayloadUpdate , userContext )
453483 }
454484
455485 getClaimValue := func (sessionHandle string , claim * claims.TypeSessionClaim , userContext supertokens.UserContext ) (sessmodels.GetClaimValueResult , error ) {
456- sessionInfo , err := (* result .GetSessionInformation )(sessionHandle , userContext )
486+ recipe , err := getRecipeInstanceOrThrowError ()
487+ if err != nil {
488+ return sessmodels.GetClaimValueResult {}, err
489+ }
490+ sessionInfo , err := (* recipe .RecipeImpl .GetSessionInformation )(sessionHandle , userContext )
457491 if err != nil {
458492 return sessmodels.GetClaimValueResult {}, err
459493 }
@@ -471,10 +505,16 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
471505 }
472506
473507 removeClaim := func (sessionHandle string , claim * claims.TypeSessionClaim , userContext supertokens.UserContext ) (bool , error ) {
508+ recipe , err := getRecipeInstanceOrThrowError ()
509+ if err != nil {
510+ return false , err
511+ }
512+
474513 accessTokenPayloadUpdate := claim .RemoveFromPayloadByMerge_internal (map [string ]interface {}{}, userContext )
475- return (* result .MergeIntoAccessTokenPayload )(sessionHandle , accessTokenPayloadUpdate , userContext )
514+ return (* recipe . RecipeImpl .MergeIntoAccessTokenPayload )(sessionHandle , accessTokenPayloadUpdate , userContext )
476515 }
477- result = sessmodels.RecipeInterface {
516+
517+ return sessmodels.RecipeInterface {
478518 CreateNewSession : & createNewSession ,
479519 GetSession : & getSession ,
480520 RefreshSession : & refreshSession ,
@@ -496,5 +536,4 @@ func MakeRecipeImplementation(querier supertokens.Querier, config sessmodels.Typ
496536 RemoveClaim : & removeClaim ,
497537 }
498538
499- return result
500539}
0 commit comments