func (wfe *WebFrontEndImpl) NewRegistration(response http.ResponseWriter, request *http.Request) { if request.Method != "POST" { wfe.sendError(response, "Method not allowed", "", http.StatusMethodNotAllowed) return } body, key, _, err := wfe.verifyPOST(request, false) if err != nil { wfe.sendError(response, "Unable to read/verify body", err, http.StatusBadRequest) return } var init, unmarshalled core.Registration err = json.Unmarshal(body, &unmarshalled) if err != nil { wfe.sendError(response, "Error unmarshaling JSON", err, http.StatusBadRequest) return } if len(unmarshalled.Agreement) > 0 && unmarshalled.Agreement != wfe.SubscriberAgreementURL { wfe.sendError(response, fmt.Sprintf("Provided agreement URL [%s] does not match current agreement URL [%s]", unmarshalled.Agreement, wfe.SubscriberAgreementURL), nil, http.StatusBadRequest) return } init.MergeUpdate(unmarshalled) reg, err := wfe.RA.NewRegistration(init, *key) if err != nil { wfe.sendError(response, "Error creating new registration", err, http.StatusInternalServerError) return } regURL := fmt.Sprintf("%s%s", wfe.RegBase, string(reg.ID)) responseBody, err := json.Marshal(reg) if err != nil { wfe.sendError(response, "Error marshaling authz", err, http.StatusInternalServerError) return } response.Header().Add("Location", regURL) response.Header().Set("Content-Type", "application/json") response.Header().Add("Link", link(wfe.NewAuthz, "next")) if len(wfe.TermsPath) > 0 { response.Header().Add("Link", link(wfe.BaseURL+wfe.TermsPath, "terms-of-service")) } response.WriteHeader(http.StatusCreated) response.Write(responseBody) // incr reg stat wfe.Stats.Inc("Registrations", 1, 1.0) }
// UpdateRegistration updates an existing Registration with new values. func (ra *RegistrationAuthorityImpl) UpdateRegistration(base core.Registration, update core.Registration) (reg core.Registration, err error) { base.MergeUpdate(update) err = validateContacts(base.Contact, ra.DNSResolver) if err != nil { return } reg = base err = ra.SA.UpdateRegistration(base) if err != nil { // InternalServerError since the user-data was validated before being // passed to the SA. err = core.InternalServerError(fmt.Sprintf("Could not update registration: %s", err)) } return }
// UpdateRegistration updates an existing Registration with new values. func (ra *RegistrationAuthorityImpl) UpdateRegistration(ctx context.Context, base core.Registration, update core.Registration) (reg core.Registration, err error) { base.MergeUpdate(update) err = ra.validateContacts(ctx, base.Contact) if err != nil { return } reg = base err = ra.SA.UpdateRegistration(ctx, base) if err != nil { // InternalServerError since the user-data was validated before being // passed to the SA. err = core.InternalServerError(fmt.Sprintf("Could not update registration: %s", err)) } ra.stats.Inc("RA.UpdatedRegistrations", 1, 1.0) return }
func (ra *RegistrationAuthorityImpl) UpdateRegistration(base core.Registration, update core.Registration) (reg core.Registration, err error) { base.MergeUpdate(update) reg = base err = ra.SA.UpdateRegistration(base) return }