Skip to content

Commit fe11666

Browse files
committed
fix: updated getEmailForUserId and postinit callback
1 parent 07c196e commit fe11666

File tree

3 files changed

+65
-15
lines changed

3 files changed

+65
-15
lines changed

recipe/thirdparty/recipe.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import (
2020
"net/http"
2121

2222
"github.com/supertokens/supertokens-golang/ingredients/emaildelivery"
23+
"github.com/supertokens/supertokens-golang/recipe/emailverification"
24+
"github.com/supertokens/supertokens-golang/recipe/emailverification/evmodels"
2325
"github.com/supertokens/supertokens-golang/recipe/thirdparty/api"
2426
"github.com/supertokens/supertokens-golang/recipe/thirdparty/tpmodels"
2527
"github.com/supertokens/supertokens-golang/supertokens"
@@ -55,6 +57,13 @@ func MakeRecipe(recipeId string, appInfo supertokens.NormalisedAppinfo, config *
5557
r.RecipeImpl = verifiedConfig.Override.Functions(MakeRecipeImplementation(*querierInstance))
5658
r.Providers = config.SignInAndUpFeature.Providers
5759

60+
supertokens.AddPostInitCallback(func() {
61+
evRecipe := emailverification.GetRecipeInstance()
62+
if evRecipe != nil {
63+
evRecipe.AddGetEmailForUserIdFunc(r.getEmailForUserId)
64+
}
65+
})
66+
5867
return *r, nil
5968
}
6069

@@ -141,15 +150,21 @@ func (r *Recipe) handleError(err error, req *http.Request, res http.ResponseWrit
141150
return false, err
142151
}
143152

144-
func (r *Recipe) getEmailForUserId(userID string, userContext supertokens.UserContext) (string, error) {
153+
func (r *Recipe) getEmailForUserId(userID string, userContext supertokens.UserContext) (evmodels.TypeEmailInfo, error) {
145154
userInfo, err := (*r.RecipeImpl.GetUserByID)(userID, userContext)
146155
if err != nil {
147-
return "", err
156+
return evmodels.TypeEmailInfo{}, err
148157
}
149158
if userInfo == nil {
150-
return "", errors.New("unknown User ID provided")
159+
return evmodels.TypeEmailInfo{
160+
UnknownUserIDError: &struct{}{},
161+
}, nil
151162
}
152-
return userInfo.Email, nil
163+
return evmodels.TypeEmailInfo{
164+
OK: &struct{ Email string }{
165+
Email: userInfo.Email,
166+
},
167+
}, nil
153168
}
154169

155170
func ResetForTest() {

recipe/thirdpartyemailpassword/recipe.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/supertokens/supertokens-golang/recipe/emailpassword"
2424
"github.com/supertokens/supertokens-golang/recipe/emailpassword/epmodels"
2525
"github.com/supertokens/supertokens-golang/recipe/emailverification"
26+
"github.com/supertokens/supertokens-golang/recipe/emailverification/evmodels"
2627
"github.com/supertokens/supertokens-golang/recipe/thirdparty"
2728
"github.com/supertokens/supertokens-golang/recipe/thirdparty/tpmodels"
2829
"github.com/supertokens/supertokens-golang/recipe/thirdpartyemailpassword/api"
@@ -124,6 +125,13 @@ func MakeRecipe(recipeId string, appInfo supertokens.NormalisedAppinfo, config *
124125
}
125126
}
126127

128+
supertokens.AddPostInitCallback(func() {
129+
evRecipe := emailverification.GetRecipeInstance()
130+
if evRecipe != nil {
131+
evRecipe.AddGetEmailForUserIdFunc(r.getEmailForUserId)
132+
}
133+
})
134+
127135
return *r, nil
128136
}
129137

@@ -208,15 +216,21 @@ func (r *Recipe) handleError(err error, req *http.Request, res http.ResponseWrit
208216
return false, err
209217
}
210218

211-
func (r *Recipe) getEmailForUserId(userID string, userContext supertokens.UserContext) (string, error) {
219+
func (r *Recipe) getEmailForUserId(userID string, userContext supertokens.UserContext) (evmodels.TypeEmailInfo, error) {
212220
userInfo, err := (*r.RecipeImpl.GetUserByID)(userID, userContext)
213221
if err != nil {
214-
return "", err
222+
return evmodels.TypeEmailInfo{}, err
215223
}
216224
if userInfo == nil {
217-
return "", errors.New("Unknown User ID provided")
218-
}
219-
return userInfo.Email, nil
225+
return evmodels.TypeEmailInfo{
226+
UnknownUserIDError: &struct{}{},
227+
}, nil
228+
}
229+
return evmodels.TypeEmailInfo{
230+
OK: &struct{ Email string }{
231+
Email: userInfo.Email,
232+
},
233+
}, nil
220234
}
221235

222236
func ResetForTest() {

recipe/thirdpartypasswordless/recipe.go

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121

2222
"github.com/supertokens/supertokens-golang/ingredients/emaildelivery"
2323
"github.com/supertokens/supertokens-golang/ingredients/smsdelivery"
24+
"github.com/supertokens/supertokens-golang/recipe/emailverification"
25+
"github.com/supertokens/supertokens-golang/recipe/emailverification/evmodels"
2426
"github.com/supertokens/supertokens-golang/recipe/passwordless"
2527
"github.com/supertokens/supertokens-golang/recipe/passwordless/plessmodels"
2628
"github.com/supertokens/supertokens-golang/recipe/thirdparty"
@@ -133,6 +135,13 @@ func MakeRecipe(recipeId string, appInfo supertokens.NormalisedAppinfo, config t
133135
}
134136
}
135137

138+
supertokens.AddPostInitCallback(func() {
139+
evRecipe := emailverification.GetRecipeInstance()
140+
if evRecipe != nil {
141+
evRecipe.AddGetEmailForUserIdFunc(r.getEmailForUserId)
142+
}
143+
})
144+
136145
return *r, nil
137146
}
138147

@@ -217,25 +226,37 @@ func (r *Recipe) handleError(err error, req *http.Request, res http.ResponseWrit
217226
return false, err
218227
}
219228

220-
func (r *Recipe) getEmailForUserIdForEmailVerification(userID string, userContext supertokens.UserContext) (string, error) {
229+
func (r *Recipe) getEmailForUserId(userID string, userContext supertokens.UserContext) (evmodels.TypeEmailInfo, error) {
221230
userInfo, err := (*r.RecipeImpl.GetUserByID)(userID, userContext)
222231
if err != nil {
223-
return "", err
232+
return evmodels.TypeEmailInfo{}, err
224233
}
225234
if userInfo == nil {
226-
return "", errors.New("Unknown User ID provided")
235+
return evmodels.TypeEmailInfo{
236+
UnknownUserIDError: &struct{}{},
237+
}, nil
227238
}
228239
if userInfo.ThirdParty == nil {
229240
if userInfo.Email != nil {
230-
return *userInfo.Email, nil
241+
return evmodels.TypeEmailInfo{
242+
OK: &struct{ Email string }{
243+
Email: *userInfo.Email,
244+
},
245+
}, nil
231246
}
232247
// this is a passwordless user with only a phone number.
233248
// returning an empty string here is not a problem since
234249
// we override the email verification functions above to
235250
// send that the email is already verified for passwordless users.
236-
return "", nil
251+
return evmodels.TypeEmailInfo{
252+
EmailDoesNotExistError: &struct{}{},
253+
}, nil
237254
}
238-
return *userInfo.Email, nil
255+
return evmodels.TypeEmailInfo{
256+
OK: &struct{ Email string }{
257+
Email: *userInfo.Email,
258+
},
259+
}, nil
239260
}
240261

241262
func ResetForTest() {

0 commit comments

Comments
 (0)