MCPcopy Create free account
hub / github.com/supabase/auth / verifyPost

Method verifyPost

internal/api/verify.go:229–311  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request, params *VerifyParams)

Source from the content-addressed store, hash-verified

227}
228
229func (a *API) verifyPost(w http.ResponseWriter, r *http.Request, params *VerifyParams) error {
230 ctx := r.Context()
231 db := a.db.WithContext(ctx)
232
233 var (
234 user *models.User
235 grantParams models.GrantParams
236 token *AccessTokenResponse
237 )
238 var isSingleConfirmationResponse = false
239
240 grantParams.FillGrantParams(r)
241
242 err := db.Transaction(func(tx *storage.Connection) error {
243 var terr error
244 aud := a.requestAud(ctx, r)
245
246 if isUsingTokenHash(params) {
247 user, terr = a.verifyTokenHash(tx, params)
248 } else {
249 user, terr = a.verifyUserAndToken(tx, params, aud)
250 }
251 if terr != nil {
252 return terr
253 }
254
255 switch params.Type {
256 case mail.SignupVerification, mail.InviteVerification:
257 user, terr = a.signupVerify(r, ctx, tx, user)
258 case mail.RecoveryVerification, mail.MagicLinkVerification:
259 user, terr = a.recoverVerify(r, tx, user)
260 case mail.EmailChangeVerification:
261 user, terr = a.emailChangeVerify(r, tx, params, user)
262 if user == nil && terr == nil {
263 isSingleConfirmationResponse = true
264 return nil
265 }
266 case smsVerification, phoneChangeVerification:
267 user, terr = a.smsVerify(r, tx, user, params)
268 default:
269 return apierrors.NewBadRequestError(apierrors.ErrorCodeValidationFailed, "Unsupported verification type")
270 }
271
272 if terr != nil {
273 return terr
274 }
275
276 if terr := user.UpdateAppMetaDataProviders(tx); terr != nil {
277 return terr
278 }
279
280 // Reload user model from db.
281 // This is important for refreshing the data in any generated columns like IsAnonymous.
282 if terr := tx.Reload(user); terr != nil {
283 return terr
284 }
285 token, terr = a.issueRefreshToken(r, w.Header(), tx, user, models.OTP, grantParams)
286 if terr != nil {

Callers 1

VerifyMethod · 0.95

Calls 15

requestAudMethod · 0.95
verifyTokenHashMethod · 0.95
verifyUserAndTokenMethod · 0.95
signupVerifyMethod · 0.95
recoverVerifyMethod · 0.95
emailChangeVerifyMethod · 0.95
smsVerifyMethod · 0.95
issueRefreshTokenMethod · 0.95
NewBadRequestErrorFunction · 0.92
RecordLoginFunction · 0.92
isUsingTokenHashFunction · 0.85
sendJSONFunction · 0.85

Tested by

no test coverage detected