Skip to content
Snippets Groups Projects
Commit 1a205c51 authored by meskio's avatar meskio :tent:
Browse files

Be able to set login on password reset

parent 6f236cb0
No related branches found
No related tags found
No related merge requests found
......@@ -130,7 +130,7 @@ func (a *api) SendPasswordReset(w http.ResponseWriter, req *http.Request) {
func (a *api) ValidatePasswordReset(w http.ResponseWriter, req *http.Request) {
vars := mux.Vars(req)
token := vars["token"]
err := a.db.ValidPasswordReset(token)
passwordReset, err := a.db.GetPasswordReset(token)
if err != nil {
log.Printf("Can't get password reset %s: %v", token, err)
if errors.Is(err, db.ErrorNotFound) {
......@@ -141,8 +141,14 @@ func (a *api) ValidatePasswordReset(w http.ResponseWriter, req *http.Request) {
return
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
w.Write([]byte("Valid token"))
err = json.NewEncoder(w).Encode(*passwordReset.Member)
if err != nil {
log.Printf("Can't encode member: %v", err)
w.WriteHeader(http.StatusInternalServerError)
return
}
}
func (a *api) PasswordReset(w http.ResponseWriter, req *http.Request) {
......
......@@ -156,13 +156,8 @@ func (d DB) NewPasswordReset(email string) (member Member, token string, err err
return
}
func (d *DB) ValidPasswordReset(token string) error {
_, err := d.getPasswordReset(token)
return err
}
func (d *DB) ResetPassword(token, password, login string) error {
passwordReset, err := d.getPasswordReset(token)
passwordReset, err := d.GetPasswordReset(token)
if err != nil {
return err
}
......@@ -186,7 +181,7 @@ func (d *DB) ResetPassword(token, password, login string) error {
})
}
func (d *DB) getPasswordReset(token string) (passwordReset PasswordReset, err error) {
func (d *DB) GetPasswordReset(token string) (passwordReset PasswordReset, err error) {
err = d.db.Where("token = ?", token).
Preload("Member").
First(&passwordReset).Error
......
......@@ -33,7 +33,7 @@ func (a *api) AddMember(w http.ResponseWriter, req *http.Request) {
w.WriteHeader(http.StatusInternalServerError)
return
}
err = a.mail.sendNewMember(memberReq.Member, "/nreset/"+token)
err = a.mail.sendNewMember(memberReq.Member, "/reset/"+token)
if err != nil {
log.Printf("Can't send the pass/login reset email to %s: %v", memberReq.Email, err)
w.WriteHeader(http.StatusInternalServerError)
......
......@@ -87,9 +87,6 @@ function UnlogedPanel(props) {
<BrowserRouter>
<Switch>
<Route path="/reset/:token" component={ResetPassword} />
<Route path="/nreset/:token">
<ResetPassword login />
</Route>
<Route path="/reset/" component={ResetRequest} />
<Route path="/">
<SignIn onLogin={props.onLogin} />
......
......@@ -5,11 +5,12 @@ import PasswordForm from "./PasswordForm";
import Sender from "./Sender";
import { url } from "./util";
function ResetPassword(props) {
function ResetPassword() {
const [password, setPassword] = useState("");
const [login, setLogin] = useState("");
const [validPass, setValidPass] = useState(false);
const [validToken, setValidToken] = useState("loading");
const [needsLogin, setNeedsLogin] = useState(false);
const [success, setSuccess] = useState(false);
const { token } = useParams();
......@@ -17,7 +18,11 @@ function ResetPassword(props) {
if (validToken === "loading") {
fetch(url("/api/reset/" + token)).then((response) => {
setValidToken(response.ok);
});
return response.json();
})
.then((member) => {
setNeedsLogin(!member.login);
});
}
});
......@@ -50,11 +55,11 @@ function ResetPassword(props) {
);
}
const body = props.login ? { password, login } : { password };
const disabled = !validPass || (props.login && !login);
const body = needsLogin ? { password, login } : { password };
const disabled = !validPass || (needsLogin && !login);
let head = <h2>Cambio de contraseña</h2>;
if (props.login) {
if (needsLogin) {
head = (
<div>
<h2>Configura tu nombre de acceso y contraseña</h2>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment