mirror of
https://github.com/zitadel/zitadel.git
synced 2025-04-16 11:31:29 +00:00

Merge pull request from GHSA-v683-rcxx-vpff (cherry picked from commit 54676eda9806634d3b249541c30f979b4b0dce21)
54 lines
1.8 KiB
Go
54 lines
1.8 KiB
Go
package login
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/zitadel/zitadel/internal/domain"
|
|
"github.com/zitadel/zitadel/internal/errors"
|
|
"github.com/zitadel/zitadel/internal/query"
|
|
)
|
|
|
|
const (
|
|
tmplPasswordResetDone = "passwordresetdone"
|
|
)
|
|
|
|
func (l *Login) handlePasswordReset(w http.ResponseWriter, r *http.Request) {
|
|
authReq, err := l.getAuthRequest(r)
|
|
if err != nil {
|
|
l.renderError(w, r, authReq, err)
|
|
return
|
|
}
|
|
loginName, err := query.NewUserLoginNamesSearchQuery(authReq.LoginName)
|
|
if err != nil {
|
|
l.renderInitPassword(w, r, authReq, authReq.UserID, "", err)
|
|
return
|
|
}
|
|
user, err := l.query.GetUser(setContext(r.Context(), authReq.UserOrgID), true, false, loginName)
|
|
if err != nil {
|
|
if authReq.LoginPolicy.IgnoreUnknownUsernames && errors.IsNotFound(err) {
|
|
err = nil
|
|
}
|
|
l.renderPasswordResetDone(w, r, authReq, err)
|
|
return
|
|
}
|
|
passwordCodeGenerator, err := l.query.InitEncryptionGenerator(r.Context(), domain.SecretGeneratorTypePasswordResetCode, l.userCodeAlg)
|
|
if err != nil {
|
|
if authReq.LoginPolicy.IgnoreUnknownUsernames && errors.IsNotFound(err) {
|
|
err = nil
|
|
}
|
|
l.renderPasswordResetDone(w, r, authReq, err)
|
|
return
|
|
}
|
|
_, err = l.command.RequestSetPassword(setContext(r.Context(), authReq.UserOrgID), user.ID, authReq.UserOrgID, domain.NotificationTypeEmail, passwordCodeGenerator)
|
|
l.renderPasswordResetDone(w, r, authReq, err)
|
|
}
|
|
|
|
func (l *Login) renderPasswordResetDone(w http.ResponseWriter, r *http.Request, authReq *domain.AuthRequest, err error) {
|
|
var errID, errMessage string
|
|
if err != nil {
|
|
errID, errMessage = l.getErrorMessage(r, err)
|
|
}
|
|
data := l.getUserData(r, authReq, "PasswordResetDone.Title", "PasswordResetDone.Description", errID, errMessage)
|
|
l.renderer.RenderTemplate(w, r, l.getTranslator(r.Context(), authReq), l.renderer.Templates[tmplPasswordResetDone], data, nil)
|
|
}
|