MCPcopy Index your code
hub / github.com/dnote/dnote / CreateResetToken

Method CreateResetToken

pkg/server/controllers/users.go:293–333  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

291}
292
293func (u *Users) CreateResetToken(w http.ResponseWriter, r *http.Request) {
294 vd := views.Data{}
295
296 var form createResetTokenPayload
297 if err := parseForm(r, &form); err != nil {
298 handleHTMLError(w, r, err, "parsing form", u.PasswordResetView, vd)
299 return
300 }
301
302 if form.Email == "" {
303 handleHTMLError(w, r, app.ErrEmailRequired, "email is not provided", u.PasswordResetView, vd)
304 return
305 }
306
307 var user database.User
308 err := u.app.DB.Where("email = ?", form.Email).First(&user).Error
309 if errors.Is(err, gorm.ErrRecordNotFound) {
310 return
311 }
312 if err != nil {
313 handleHTMLError(w, r, err, "finding user", u.PasswordResetView, vd)
314 return
315 }
316
317 resetToken, err := token.Create(u.app.DB, user.ID, database.TokenTypeResetPassword)
318 if err != nil {
319 handleHTMLError(w, r, err, "generating token", u.PasswordResetView, vd)
320 return
321 }
322
323 if err := u.app.SendPasswordResetEmail(user.Email.String, resetToken.Value); err != nil {
324 handleHTMLError(w, r, err, "sending password reset email", u.PasswordResetView, vd)
325 return
326 }
327
328 alert := views.Alert{
329 Level: views.AlertLvlSuccess,
330 Message: "Check your email for a link to reset your password.",
331 }
332 views.RedirectAlert(w, r, "/password-reset", http.StatusFound, alert)
333}
334
335// PasswordResetConfirm renders password reset view
336func (u *Users) PasswordResetConfirm(w http.ResponseWriter, r *http.Request) {

Callers

nothing calls this directly

Calls 5

CreateFunction · 0.92
RedirectAlertFunction · 0.92
parseFormFunction · 0.85
handleHTMLErrorFunction · 0.85

Tested by

no test coverage detected