in dex/password.go [60:91]
func UpdatePassword(email string, newPassword string, newEmail string) error {
conn, err := newGrpcConnection()
if err != nil {
return getApiClientError(err)
}
defer conn.Close()
client := api.NewDexClient(conn)
hash, err := bcrypt.GenerateFromPassword([]byte(newPassword), bcrypt.DefaultCost)
if err != nil {
err = fmt.Errorf("failed to bcrypt password: %s", err)
return getError(err)
}
req := &api.UpdatePasswordReq{
Email: email,
NewHash: hash,
NewUsername: newEmail,
}
if resp, err := client.UpdatePassword(context.TODO(), req); err != nil || (resp != nil && resp.NotFound) {
if resp != nil && resp.NotFound {
err = fmt.Errorf("password for %s not found", email)
return getError(err)
}
err = fmt.Errorf("failed to update password %s", err)
return getError(err)
}
return nil
}