diff --git a/api/auth.go b/api/auth.go
index 4f880373eeeb965b9019760a41ffadbc9436ca56..d6eae9b3d2246c543c306c514ff3e19f8c6be080 100644
--- a/api/auth.go
+++ b/api/auth.go
@@ -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) {
diff --git a/api/db/member.go b/api/db/member.go
index 7d11ae886aceb379be333de44a77df4a3f0350c4..4b86dbb088d439f219df96b4fed2e0c0fa8bcfe9 100644
--- a/api/db/member.go
+++ b/api/db/member.go
@@ -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
diff --git a/api/member.go b/api/member.go
index ef81866931129b7598cd71f13a2edd9c125d1108..455f9ac9193a082f5b28c56ede5556b24802ab88 100644
--- a/api/member.go
+++ b/api/member.go
@@ -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)
diff --git a/src/Panel.js b/src/Panel.js
index 4f8480071e506cda93813c9a81337024e1b1392a..b1aaaea5e4cd5f639c929e9cfd62cfce7d481193 100644
--- a/src/Panel.js
+++ b/src/Panel.js
@@ -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} />
diff --git a/src/ResetPassword.js b/src/ResetPassword.js
index e5d6c16ca1b4463d8e4f3cee4e3d101eb251fad7..6efd8da05101286515991e237d4d4fc01e5a965d 100644
--- a/src/ResetPassword.js
+++ b/src/ResetPassword.js
@@ -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>