An atproto PDS written in Go

get email from rq

+8
server/common.go
··· 20 20 return &repo, nil 21 21 } 22 22 23 + func (s *Server) getRepoActorByEmail(email string) (*models.RepoActor, error) { 24 + var repo models.RepoActor 25 + if err := s.db.Raw("SELECT r.*, a.* FROM repos r LEFT JOIN actors a ON r.did = a.did WHERE r.email= ?", email).Scan(&repo).Error; err != nil { 26 + return nil, err 27 + } 28 + return &repo, nil 29 + } 30 + 23 31 func (s *Server) getRepoActorByDid(did string) (*models.RepoActor, error) { 24 32 var repo models.RepoActor 25 33 if err := s.db.Raw("SELECT r.*, a.* FROM repos r LEFT JOIN actors a ON r.did = a.did WHERE r.did = ?", did).Scan(&repo).Error; err != nil {
+22 -1
server/handle_server_request_password_reset.go
··· 9 9 "github.com/labstack/echo/v4" 10 10 ) 11 11 12 + type ComAtprotoServerRequestPasswordResetRequest struct { 13 + Email string `json:"email" validate:"required"` 14 + } 15 + 12 16 func (s *Server) handleServerRequestPasswordReset(e echo.Context) error { 13 - urepo := e.Get("repo").(*models.RepoActor) 17 + urepo, ok := e.Get("repo").(*models.RepoActor) 18 + if !ok { 19 + var req ComAtprotoServerRequestPasswordResetRequest 20 + if err := e.Bind(&req); err != nil { 21 + return err 22 + } 23 + 24 + if err := e.Validate(req); err != nil { 25 + return err 26 + } 27 + 28 + murepo, err := s.getRepoActorByEmail(req.Email) 29 + if err != nil { 30 + return err 31 + } 32 + 33 + urepo = murepo 34 + } 14 35 15 36 code := fmt.Sprintf("%s-%s", helpers.RandomVarchar(5), helpers.RandomVarchar(5)) 16 37 eat := time.Now().Add(10 * time.Minute).UTC()