alisha08770
05/17/2022, 9:46 AMrp_st
05/17/2022, 9:48 AMrp_st
05/17/2022, 9:48 AMalisha08770
05/17/2022, 9:48 AMrp_st
05/17/2022, 9:51 AMrp_st
05/17/2022, 9:53 AMgo
func main() {
passwordless.Init(plessmodels.TypeInput{
Override: &plessmodels.OverrideStruct{
APIs: func(originalImplementation plessmodels.APIInterface) plessmodels.APIInterface {
originalCreateCodePOST := *originalImplementation.CreateCodePOST
(*originalImplementation.CreateCodePOST) = func(email, phoneNumber *string, options plessmodels.APIOptions, userContext supertokens.UserContext) (plessmodels.CreateCodePOSTResponse, error) {
resp, err := originalCreateCodePOST(email, phoneNumber, options, userContext)
if err != nil {
// this is usually some 500 error like core connection issues..
return plessmodels.CreateCodePOSTResponse{}, err
}
if resp.GeneralError != nil {
// this is usually some custom error message which will be displayed
// on the frontend
return resp, err
}
// code creation was successful
return resp, err
}
return originalImplementation
},
},
})
}
rp_st
05/17/2022, 9:55 AMif
conditions, you can do whatever you like. You can even send a response to the client directly (using options.Res
).alisha08770
05/17/2022, 9:55 AMalisha08770
05/17/2022, 10:04 AMalisha08770
05/17/2022, 10:05 AMrp_st
05/17/2022, 10:05 AMalisha08770
05/17/2022, 10:25 AMalisha08770
05/17/2022, 10:25 AM{
"message": "Phone number is invalid",
"status": "GENERAL_ERROR"
}
alisha08770
05/17/2022, 10:26 AMrp_st
05/17/2022, 10:28 AMValidatePhoneNumber
function in the init call yourself: https://pkg.go.dev/github.com/supertokens/supertokens-golang@v0.6.0/recipe/passwordless/plessmodels#ContactMethodPhoneConfigrp_st
05/17/2022, 10:28 AMrp_st
05/17/2022, 10:28 AMalisha08770
05/17/2022, 10:29 AMrp_st
05/17/2022, 10:29 AMalisha08770
05/17/2022, 10:30 AMalisha08770
05/17/2022, 10:30 AMrp_st
05/17/2022, 10:33 AMrp_st
05/17/2022, 10:33 AMrp_st
05/17/2022, 10:34 AMalisha08770
05/17/2022, 10:35 AMrp_st
05/17/2022, 10:35 AMalisha08770
05/17/2022, 10:35 AMalisha08770
05/17/2022, 10:36 AMrp_st
05/17/2022, 10:36 AMalisha08770
05/17/2022, 10:36 AMalisha08770
05/18/2022, 11:13 AMrp_st
05/18/2022, 11:14 AMalisha08770
05/18/2022, 11:16 AMrp_st
05/18/2022, 11:19 AMalisha08770
05/18/2022, 11:19 AMrp_st
05/18/2022, 11:20 AMrp_st
05/18/2022, 11:25 AMalisha08770
05/18/2022, 11:26 AMalisha08770
05/19/2022, 10:02 AMalisha08770
05/19/2022, 10:03 AMalisha08770
05/19/2022, 10:03 AMalisha08770
05/19/2022, 10:03 AM(*originalImplementation.CreateCodePOST) = func(email *string, phoneNumber *string, optionsCreateCode plessmodels.APIOptions, userContextCreateCode supertokens.UserContext) (plessmodels.CreateCodePOSTResponse, error) {
err := validatePhone(*phoneNumber)
if err != nil {
responseJson := map[string]interface{}{
"message": err,
}
bytes, _ := json.Marshal(responseJson)
optionsCreateCode.Res.Header().Set("Content-Type", "application/json")
optionsCreateCode.Res.WriteHeader(400)
optionsCreateCode.Res.Write(bytes)
return plessmodels.CreateCodePOSTResponse{}, nil
}
return originalCreateCodePOST(email, phoneNumber, optionsCreateCode, userContextCreateCode)
}
alisha08770
05/19/2022, 10:04 AMrp_st
05/19/2022, 10:44 AMalisha08770
05/19/2022, 10:56 AMrp_st
05/19/2022, 11:59 AMsattvikc
05/19/2022, 12:04 PMsattvikc
05/19/2022, 12:08 PMoriginalCreateCodePOST = *originalImplementation.CreateCodePOST
newCreateCodePOST = func(email *string, phoneNumber *string, optionsCreateCode plessmodels.APIOptions, userContextCreateCode supertokens.UserContext) (plessmodels.CreateCodePOSTResponse, error) {
err := validatePhone(*phoneNumber)
if err != nil {
responseJson := map[string]interface{}{
"message": err,
}
bytes, _ := json.Marshal(responseJson)
optionsCreateCode.Res.Header().Set("Content-Type", "application/json")
optionsCreateCode.Res.WriteHeader(400)
optionsCreateCode.Res.Write(bytes)
return plessmodels.CreateCodePOSTResponse{}, nil
}
return originalCreateCodePOST(email, phoneNumber, optionsCreateCode, userContextCreateCode)
}
originalImplementation.CreateCodePOST = &newCreateCodePOST
rp_st
05/19/2022, 12:14 PMrp_st
05/19/2022, 12:15 PMoriginalCreateCodePOST
won't be called at all anywaysattvikc
05/19/2022, 12:15 PMrp_st
05/19/2022, 12:15 PMrp_st
05/19/2022, 12:15 PMalisha08770
05/19/2022, 12:32 PMsattvikc
05/19/2022, 12:53 PM(*originalImplementation.CreateCodePOST) = func(email *string, phoneNumber *string, optionsCreateCode plessmodels.APIOptions, userContextCreateCode supertokens.UserContext) (plessmodels.CreateCodePOSTResponse, error) {
err := validatePhone(*phoneNumber)
if err != nil {
responseJson := map[string]interface{}{
"message": err.Error(),
}
bytes, _ := json.Marshal(responseJson)
optionsCreateCode.Res.Header().Set("Content-Type", "application/json")
optionsCreateCode.Res.WriteHeader(400)
optionsCreateCode.Res.Write(bytes)
return plessmodels.CreateCodePOSTResponse{
OK: &struct {
DeviceID string
PreAuthSessionID string
FlowType string
}{},
}, nil
}
return originalCreateCodePOST(email, phoneNumber, optionsCreateCode, userContextCreateCode)
}
return originalImplementation
alisha08770
05/19/2022, 2:48 PMrp_st
05/19/2022, 2:49 PMrp_st
05/19/2022, 2:49 PMalisha08770
05/19/2022, 2:50 PMrp_st
05/19/2022, 2:52 PMfmt.Println("inside override")
is not actually inside the override. To put it in the override, you would have to put it before err := validatePhone(*phoneNumber)
linerp_st
05/19/2022, 2:52 PMerr := validatePhone(*phoneNumber)
and see if it gets printed out when you call the API?alisha08770
05/19/2022, 2:53 PMrp_st
05/19/2022, 2:53 PMalisha08770
05/19/2022, 2:54 PMalisha08770
05/19/2022, 2:54 PMrp_st
05/19/2022, 2:54 PMalisha08770
05/19/2022, 2:55 PM{
"message": "Phone number is invalid",
"status": "GENERAL_ERROR"
}
alisha08770
05/19/2022, 2:55 PMrp_st
05/19/2022, 2:55 PMalisha08770
05/19/2022, 2:56 PMrp_st
05/19/2022, 2:56 PMContactMethodPhone
?alisha08770
05/19/2022, 2:56 PMrp_st
05/19/2022, 2:57 PMgo
ContactMethodPhone: plessmodels.ContactMethodPhoneConfig{
ValidatePhoneNumber: func(phoneNumber interface{}) *string {
return nil
},
},
rp_st
05/19/2022, 2:57 PMrp_st
05/19/2022, 2:57 PMalisha08770
05/19/2022, 2:58 PMrp_st
05/19/2022, 2:59 PMalisha08770
05/19/2022, 2:59 PMalisha08770
05/25/2022, 7:18 AMalisha08770
05/25/2022, 7:19 AMalisha08770
05/25/2022, 7:21 AMHeaders were already written. Wanted to override status code 200 with 500
rp_st
05/25/2022, 8:05 AMsattvikc
05/25/2022, 8:08 AMsattvikc
05/25/2022, 8:09 AMrp_st
05/25/2022, 8:10 AMrp_st
05/25/2022, 8:10 AMsattvikc
05/25/2022, 8:13 AMsattvikc
05/25/2022, 10:24 AMalisha08770
05/25/2022, 10:25 AMsattvikc
05/25/2022, 10:25 AMsattvikc
05/25/2022, 10:25 AMalisha08770
05/25/2022, 10:27 AMalisha08770
05/25/2022, 10:27 AMsattvikc
05/25/2022, 10:30 AMsattvikc
05/25/2022, 10:31 AMalisha08770
05/25/2022, 11:28 AMrp_st
05/26/2022, 10:05 AMalisha08770
05/26/2022, 10:18 AM