Using urlsigner package
This commit is contained in:
parent
7a7a823715
commit
7db64eff6a
@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"myapp/internal/cards"
|
||||
"myapp/internal/models"
|
||||
"myapp/internal/urlsigner"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
@ -417,16 +418,36 @@ func (app *application) SendPasswordResetEmail(w http.ResponseWriter, r *http.Re
|
||||
return
|
||||
}
|
||||
|
||||
// verify that email exists
|
||||
_, err = app.DB.GetUserByEmail(payload.Email)
|
||||
if err != nil {
|
||||
var resp struct {
|
||||
Error bool `json:"error"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
resp.Error = true
|
||||
resp.Message = "No matching email found on our system"
|
||||
app.writeJSON(w, http.StatusAccepted, resp)
|
||||
return
|
||||
}
|
||||
|
||||
link := fmt.Sprintf("%s/reset-password?email=%s", app.config.frontend, payload.Email)
|
||||
sign := urlsigner.Signer{
|
||||
Secret: []byte(app.config.secretkey),
|
||||
}
|
||||
|
||||
signedLink := sign.GenerateTokenFromString(link)
|
||||
|
||||
var data struct {
|
||||
Link string
|
||||
}
|
||||
|
||||
data.Link = "http://www.vinchent.xyz"
|
||||
data.Link = signedLink
|
||||
|
||||
// send mail
|
||||
err = app.SendMail(
|
||||
"info@widgets.com",
|
||||
"info@widgets.com",
|
||||
payload.Email,
|
||||
"Password Reset Request",
|
||||
"password-reset",
|
||||
data,
|
||||
|
@ -32,6 +32,7 @@ func (s *Signer) VerifyToken(token string) bool {
|
||||
_, err := crypt.Unsign([]byte(token))
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user