An atproto PDS written in Go

fix response

+18 -10
server/handle_server_request_email_update.go
···
"github.com/labstack/echo/v4"
)
+
type ComAtprotoRequestEmailUpdateResponse struct {
+
TokenRequired bool `json:"tokenRequired"`
+
}
+
func (s *Server) handleServerRequestEmailUpdate(e echo.Context) error {
urepo := e.Get("repo").(*models.RepoActor)
-
code := fmt.Sprintf("%s-%s", helpers.RandomVarchar(6), helpers.RandomVarchar(6))
-
eat := time.Now().Add(10 * time.Minute).UTC()
+
if urepo.EmailConfirmedAt != nil {
+
code := fmt.Sprintf("%s-%s", helpers.RandomVarchar(6), helpers.RandomVarchar(6))
+
eat := time.Now().Add(10 * time.Minute).UTC()
-
if err := s.db.Exec("UPDATE repos SET email_update_code = ?, email_update_code_expires_at = ? WHERE did = ?", code, eat, urepo.Repo.Did).Error; err != nil {
-
s.logger.Error("error updating repo", "error", err)
-
return helpers.ServerError(e, nil)
-
}
+
if err := s.db.Exec("UPDATE repos SET email_update_code = ?, email_update_code_expires_at = ? WHERE did = ?", code, eat, urepo.Repo.Did).Error; err != nil {
+
s.logger.Error("error updating repo", "error", err)
+
return helpers.ServerError(e, nil)
+
}
-
if err := s.sendEmailUpdate(urepo.Email, urepo.Handle, code); err != nil {
-
s.logger.Error("error sending email", "error", err)
-
return helpers.ServerError(e, nil)
+
if err := s.sendEmailUpdate(urepo.Email, urepo.Handle, code); err != nil {
+
s.logger.Error("error sending email", "error", err)
+
return helpers.ServerError(e, nil)
+
}
}
-
return e.NoContent(200)
+
return e.JSON(200, ComAtprotoRequestEmailUpdateResponse{
+
TokenRequired: urepo.EmailConfirmedAt != nil,
+
})
}
+1 -1
server/handle_server_update_email.go
···
return helpers.InputError(e, to.StringPtr("ExpiredToken"))
}
-
if err := s.db.Exec("UPDATE repos SET email_update_code = NULL, email_update_code_expires_at = NULL, email = ? WHERE did = ?", req.Email, urepo.Repo.Did).Error; err != nil {
+
if err := s.db.Exec("UPDATE repos SET email_update_code = NULL, email_update_code_expires_at = NULL, email_confirmed_at = NULL, email = ? WHERE did = ?", req.Email, urepo.Repo.Did).Error; err != nil {
s.logger.Error("error updating repo", "error", err)
return helpers.ServerError(e, nil)
}