Display helpful error message to the client (#314)

This commit is contained in:
Sung Won Cho 2019-11-18 11:16:46 +08:00 committed by GitHub
commit 6d474b1f18
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -166,24 +166,25 @@ func validateRegisterPayload(p registerPayload) error {
return nil
}
func parseRegisterPaylaod(r *http.Request) (registerPayload, bool) {
func parseRegisterPaylaod(r *http.Request) (registerPayload, error) {
var ret registerPayload
if err := json.NewDecoder(r.Body).Decode(&ret); err != nil {
return ret, false
}
if err := validateRegisterPayload(ret); err != nil {
return ret, false
return ret, errors.Wrap(err, "decoding json")
}
return ret, true
return ret, nil
}
func (a *App) register(w http.ResponseWriter, r *http.Request) {
params, ok := parseRegisterPaylaod(r)
if !ok {
params, err := parseRegisterPaylaod(r)
if err != nil {
http.Error(w, "invalid payload", http.StatusBadRequest)
return
}
if err := validateRegisterPayload(params); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
var count int
if err := a.DB.Model(database.Account{}).Where("email = ?", params.Email).Count(&count).Error; err != nil {