this repo has no description
1package server 2 3import ( 4 "github.com/Azure/go-autorest/autorest/to" 5 "github.com/haileyok/cocoon/internal/helpers" 6 "github.com/haileyok/cocoon/models" 7 "github.com/labstack/echo/v4" 8) 9 10type ComAtprotoServerConfirmEmailRequest struct { 11 Email string `json:"email" validate:"required"` 12 Token string `json:"token" validate:"required"` 13} 14 15func (s *Server) handleServerConfirmEmail(e echo.Context) error { 16 urepo := e.Get("repo").(*models.RepoActor) 17 18 var req ComAtprotoServerConfirmEmailRequest 19 if err := e.Bind(&req); err != nil { 20 s.logger.Error("error binding", "error", err) 21 return helpers.ServerError(e, nil) 22 } 23 24 if err := e.Validate(req); err != nil { 25 return helpers.InputError(e, nil) 26 } 27 28 if urepo.EmailVerificationCode == nil { 29 return helpers.InputError(e, to.StringPtr("ExpiredToken")) 30 } 31 32 if *urepo.EmailVerificationCode != req.Token { 33 return helpers.InputError(e, to.StringPtr("InvalidToken")) 34 } 35 36 if err := s.db.Exec("UPDATE repos SET email_verification_token = NULL, email_confirmed_at = NOW() WHERE did = ?", urepo.Repo.Did).Error; err != nil { 37 s.logger.Error("error updating user", "error", err) 38 return helpers.ServerError(e, nil) 39 } 40 41 return e.NoContent(200) 42}