funcinaliad del login
This commit is contained in:
parent
41b0f2c3aa
commit
014b5df704
|
@ -37,9 +37,11 @@ public class App
|
|||
String payload = request.body();
|
||||
Alumno alumno = gson.fromJson(payload, Alumno.class);
|
||||
|
||||
boolean msj = DAO.agregarAlumno(alumno);
|
||||
Mensaje msj = DAO.agregarAlumno(alumno);
|
||||
JsonObject respuesta = new JsonObject();
|
||||
respuesta.addProperty("msj", msj);
|
||||
respuesta.addProperty("contrasena", msj.getAlumno().getContrasena());
|
||||
respuesta.addProperty("matricula", msj.getAlumno().getMatricula());
|
||||
respuesta.addProperty("verificacion", msj.isVerificacion());
|
||||
return respuesta;
|
||||
});
|
||||
put("/editarAlumno", (request, response) ->{
|
||||
|
@ -58,12 +60,22 @@ public class App
|
|||
respuesta.addProperty("existe", verificado);
|
||||
return respuesta;
|
||||
});
|
||||
get("/alumnoIniciado", (request, response) ->{
|
||||
|
||||
post("/alumnoIniciado", (request, response) ->{
|
||||
response.type("application/json");
|
||||
String payload = request.body();
|
||||
Alumno alumno = gson.fromJson(payload, Alumno.class);
|
||||
return gson.toJson(DAO.alumnoIniciado(alumno.getMatricula(),alumno.getContrasena()));
|
||||
});
|
||||
|
||||
post("/usuarioValido", (request, response) ->{
|
||||
String payload = request.body();
|
||||
Alumno alumno = gson.fromJson(payload, Alumno.class);
|
||||
boolean verificado = DAO.validarAlumno(alumno);
|
||||
JsonObject respuesta = new JsonObject();
|
||||
respuesta.addProperty("existe", verificado);
|
||||
return respuesta;
|
||||
});
|
||||
|
||||
}
|
||||
}
|
|
@ -3,9 +3,10 @@ package mx.uv.Controller;
|
|||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import mx.uv.Model.Alumno;
|
||||
import mx.uv.Model.Mensaje;
|
||||
|
||||
public class DAO {
|
||||
private static Conexion cn = Conexion.getInstance();
|
||||
|
@ -23,7 +24,7 @@ public class DAO {
|
|||
stm = conn.createStatement();
|
||||
rs = stm.executeQuery(sql);
|
||||
while (rs.next()) {
|
||||
Alumno u = new Alumno(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4), rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8));
|
||||
Alumno u = new Alumno(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4), rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8),rs.getString(9));
|
||||
resultado.add(u);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
@ -40,8 +41,8 @@ public class DAO {
|
|||
ResultSet rs = null;
|
||||
conn = cn.conectar();
|
||||
try {
|
||||
String sql ="select * from usuarios "
|
||||
+ "where matricula= '"+alumno.getMatricula()+"' and contrasena='"+alumno.getContrasena()+"'";
|
||||
String sql ="select * from alumno "
|
||||
+ "where matricula= '"+alumno.getMatricula()+"' and password='"+alumno.getContrasena()+"'";
|
||||
stm = (Statement) conn.createStatement();
|
||||
rs = stm.executeQuery(sql);
|
||||
if(rs.next()){
|
||||
|
@ -56,31 +57,52 @@ public class DAO {
|
|||
return verificacion;
|
||||
}
|
||||
|
||||
public static boolean agregarAlumno(Alumno alumno) {
|
||||
public static Mensaje agregarAlumno(Alumno alumno) {
|
||||
Mensaje mensaje = new Mensaje();
|
||||
PreparedStatement stm = null;
|
||||
Connection conn = null;
|
||||
boolean msj= false;
|
||||
|
||||
String matricula = "SIU24";
|
||||
String password = crearContrasena();
|
||||
matricula += 1000+ obtenerUltimoID();
|
||||
alumno.setContrasena(password);
|
||||
alumno.setMatricula(matricula);
|
||||
conn = cn.conectar();
|
||||
try {
|
||||
String sql = "INSERT INTO `alumno`(`nombre`,`apellido`,`nacionalidad`,`matricula`,`contrasena`)VALUES(?,?,?,?,?);";
|
||||
String sql = "INSERT INTO `alumno`(`nombre`,`apellido`,`nacionalidad`,`matricula`,`password`, `correo`)VALUES(?,?,?,?,?,?);";
|
||||
stm = (PreparedStatement) conn.prepareStatement(sql);
|
||||
stm.setString(1, alumno.getNombre());
|
||||
stm.setString(2, alumno.getApellido());
|
||||
stm.setString(3, alumno.getNacionalidad());
|
||||
stm.setString(4, alumno.getMatricula());
|
||||
stm.setString(5, alumno.getContrasena());
|
||||
if (stm.executeUpdate() > 0)
|
||||
msj = true;
|
||||
stm.setString(6, alumno.getCorreo());
|
||||
if (stm.executeUpdate() > 0){
|
||||
mensaje.setVerificacion(true);
|
||||
mensaje.setAlumno(alumno);
|
||||
}
|
||||
else
|
||||
msj = false;
|
||||
mensaje.setVerificacion(false);
|
||||
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
} finally {
|
||||
cerrarConexiones(stm,conn);
|
||||
}
|
||||
return msj;
|
||||
return mensaje;
|
||||
}
|
||||
|
||||
public static String crearContrasena() {
|
||||
Random random = new Random();
|
||||
String contrasena = "";
|
||||
String CARACTERES_PERMITIDOS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#";
|
||||
for (int i = 0; i < 10; i++) {
|
||||
int numero = random.nextInt(CARACTERES_PERMITIDOS.length());
|
||||
char caracterAleatorio = CARACTERES_PERMITIDOS.charAt(numero);
|
||||
contrasena += caracterAleatorio;
|
||||
}
|
||||
|
||||
return contrasena.toString();
|
||||
}
|
||||
|
||||
private static void cerrarConexiones(PreparedStatement stm,Connection conn) {
|
||||
|
@ -109,7 +131,7 @@ public class DAO {
|
|||
boolean verificacion =false;
|
||||
conn = cn.conectar();
|
||||
try {
|
||||
String sql ="UPDATE `alumno` SET `nombre` = '"+alumno.getNombre()+"',`apellido` = '"+alumno.getApellido()+"',`fecha_nacimiento` = '"+alumno.getFechaNacimiento()+"',`nacionalidad` = '"+alumno.getNacionalidad()+"', `tipoSangre` = '"+alumno.getTipoDeSangre()+"', `contrasena`= '"+alumno.getContrasena()+"' WHERE `id` = '"+alumno.getId()+"';";
|
||||
String sql ="UPDATE `alumno` SET `nombre` = '"+alumno.getNombre()+"',`apellido` = '"+alumno.getApellido()+"',`fecha_nacimiento` = '"+alumno.getFechaNacimiento()+"',`nacionalidad` = '"+alumno.getNacionalidad()+"', `tipoSangre` = '"+alumno.getTipoDeSangre()+"', `password`= '"+alumno.getContrasena()+"' WHERE `id` = '"+alumno.getId()+"';";
|
||||
stm = conn.prepareStatement(sql);
|
||||
stm.executeUpdate();
|
||||
verificacion = true;
|
||||
|
@ -130,13 +152,13 @@ public class DAO {
|
|||
conn = cn.conectar();
|
||||
|
||||
try {
|
||||
String sql = "SELECT * FROM alumno WHERE matricula = ? AND contrasena = ?";
|
||||
String sql = "SELECT * FROM alumno WHERE matricula = ? AND password = ?";
|
||||
PreparedStatement stmt = conn.prepareStatement(sql);
|
||||
stmt.setString(1, matricula);
|
||||
stmt.setString(2, contrasena);
|
||||
rs = stmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
alumno = new Alumno(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4), rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8));
|
||||
alumno = new Alumno(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4), rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8),rs.getString(9));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
|
@ -145,4 +167,34 @@ public class DAO {
|
|||
}
|
||||
return alumno;
|
||||
}
|
||||
|
||||
public static int obtenerUltimoID() {
|
||||
Connection conn = null;
|
||||
Statement stm = null;
|
||||
ResultSet rs = null;
|
||||
int ultimoID = -1;
|
||||
|
||||
try {
|
||||
conn = cn.conectar();
|
||||
String sql = "SELECT MAX(id) AS ultimo_id FROM alumno";
|
||||
stm = conn.createStatement();
|
||||
rs = stm.executeQuery(sql);
|
||||
|
||||
if (rs.next()) {
|
||||
ultimoID = rs.getInt("ultimo_id");
|
||||
}
|
||||
} catch (SQLException ex) {
|
||||
System.err.println(ex);
|
||||
} finally {
|
||||
// Cerrar recursos
|
||||
try {
|
||||
if (rs != null) rs.close();
|
||||
if (stm != null) stm.close();
|
||||
if (conn != null) conn.close();
|
||||
} catch (SQLException ex) {
|
||||
System.err.println(ex);
|
||||
}
|
||||
}
|
||||
return ultimoID;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,9 +9,10 @@ public class Alumno {
|
|||
private String tipoDeSangre;
|
||||
private String matricula;
|
||||
private String contrasena;
|
||||
private String correo;
|
||||
|
||||
public Alumno(int id, String nombre, String apellido, String fechaNacimiento, String nacionalidad,
|
||||
String tipoDeSangre, String matricula, String contrasena) {
|
||||
String tipoDeSangre, String matricula, String contrasena, String correo) {
|
||||
this.id = id;
|
||||
this.nombre = nombre;
|
||||
this.apellido = apellido;
|
||||
|
@ -20,17 +21,20 @@ public class Alumno {
|
|||
this.tipoDeSangre = tipoDeSangre;
|
||||
this.matricula = matricula;
|
||||
this.contrasena = contrasena;
|
||||
this.correo = correo;
|
||||
}
|
||||
|
||||
|
||||
public Alumno() {
|
||||
}
|
||||
|
||||
public Alumno(String nombre, String apellido, String nacionalidad, String matricula, String contrasena) {
|
||||
public Alumno(String nombre, String apellido, String nacionalidad, String matricula, String contrasena,String correo) {
|
||||
this.nombre = nombre;
|
||||
this.apellido = apellido;
|
||||
this.nacionalidad = nacionalidad;
|
||||
this.matricula = matricula;
|
||||
this.contrasena = contrasena;
|
||||
this.correo = correo;
|
||||
}
|
||||
|
||||
public Alumno(String matricula, String contrasena) {
|
||||
|
@ -38,8 +42,6 @@ public class Alumno {
|
|||
this.contrasena = contrasena;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
@ -91,4 +93,14 @@ public class Alumno {
|
|||
}
|
||||
|
||||
|
||||
public String getCorreo() {
|
||||
return correo;
|
||||
}
|
||||
|
||||
|
||||
public void setCorreo(String correo) {
|
||||
this.correo = correo;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package mx.uv.Model;
|
||||
|
||||
public class Mensaje {
|
||||
private boolean verificacion;
|
||||
private Alumno alumno;
|
||||
|
||||
public Mensaje(){
|
||||
};
|
||||
public Mensaje(boolean verificacion, Alumno alumno) {
|
||||
this.verificacion = verificacion;
|
||||
this.alumno = alumno;
|
||||
}
|
||||
public boolean isVerificacion() {
|
||||
return verificacion;
|
||||
}
|
||||
public Alumno getAlumno() {
|
||||
return alumno;
|
||||
}
|
||||
public void setVerificacion(boolean verificacion) {
|
||||
this.verificacion = verificacion;
|
||||
}
|
||||
public void setAlumno(Alumno alumno) {
|
||||
this.alumno = alumno;
|
||||
}
|
||||
|
||||
}
|
|
@ -11,7 +11,9 @@
|
|||
"axios": "^1.6.8",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-dropzone": "^14.2.3"
|
||||
"react-dropzone": "^14.2.3",
|
||||
"react-router": "^6.23.1",
|
||||
"react-router-dom": "^6.23.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react": "^18.2.66",
|
||||
|
@ -929,6 +931,14 @@
|
|||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/@remix-run/router": {
|
||||
"version": "1.16.1",
|
||||
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz",
|
||||
"integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"version": "4.14.3",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz",
|
||||
|
@ -3668,6 +3678,36 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-router": {
|
||||
"version": "6.23.1",
|
||||
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz",
|
||||
"integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==",
|
||||
"dependencies": {
|
||||
"@remix-run/router": "1.16.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8"
|
||||
}
|
||||
},
|
||||
"node_modules/react-router-dom": {
|
||||
"version": "6.23.1",
|
||||
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz",
|
||||
"integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==",
|
||||
"dependencies": {
|
||||
"@remix-run/router": "1.16.1",
|
||||
"react-router": "6.23.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.8",
|
||||
"react-dom": ">=16.8"
|
||||
}
|
||||
},
|
||||
"node_modules/reflect.getprototypeof": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
|
||||
|
|
|
@ -13,7 +13,9 @@
|
|||
"axios": "^1.6.8",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-dropzone": "^14.2.3"
|
||||
"react-dropzone": "^14.2.3",
|
||||
"react-router": "^6.23.1",
|
||||
"react-router-dom": "^6.23.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react": "^18.2.66",
|
||||
|
|
|
@ -1,7 +1,61 @@
|
|||
import React from 'react';
|
||||
import React, {useState} from 'react';
|
||||
import axios from 'axios'
|
||||
import './Registro.css'; // Estilo para el formulario
|
||||
|
||||
function Registro(){
|
||||
const [Cargando, setCargando] = useState(false);
|
||||
const [alumno, setAlumno] = useState({
|
||||
nombre: "",
|
||||
apellido: "",
|
||||
nacionalidad: "",
|
||||
correo: "",
|
||||
});
|
||||
|
||||
const limpiar = () => {
|
||||
setAlumno((prevAlumno) => ({
|
||||
...prevAlumno,
|
||||
nombre: "",
|
||||
apellido: "",
|
||||
nacionalidad: "",
|
||||
correo: "",
|
||||
}));
|
||||
};
|
||||
|
||||
const hacerPeticion = async () => {
|
||||
try {
|
||||
const res = await axios.post("http://localhost:4567/agregarAlumno", alumno);
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
const procesarFormulario = async (e) => {
|
||||
e.preventDefault();
|
||||
setCargando(true);
|
||||
try {
|
||||
const res = await hacerPeticion();
|
||||
setCargando(false);
|
||||
if (res.verificacion) {
|
||||
limpiar();
|
||||
alert("Producto Registrado Correctamente" + "Contraseña: " + res.contrasena +" Matricula: " +res.matricula);
|
||||
} else {
|
||||
alert("Error Producto No registrado");
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
setCargando(false);
|
||||
}finally{
|
||||
}
|
||||
};
|
||||
|
||||
const cambiosAlumno = (e) => {
|
||||
const { name, value } = e.target;
|
||||
setAlumno({
|
||||
...alumno,
|
||||
[name]: value,
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="formulario">
|
||||
|
@ -10,27 +64,24 @@ function Registro(){
|
|||
<form className='form'>
|
||||
<div className="campo">
|
||||
<label htmlFor="nombre">Nombre:</label>
|
||||
<input type="text" id="nombre" name='nombre' />
|
||||
|
||||
<input type="text" id="nombre" onChange={cambiosAlumno} name='nombre' value={alumno.nombre} />
|
||||
</div>
|
||||
<div className="campo">
|
||||
<label htmlFor="apellidoPaterno">Apellido Paterno:</label>
|
||||
<input type="text" id="apellidoPaterno" name='apellidoPaterno' />
|
||||
</div>
|
||||
<div className="campo">
|
||||
<label htmlFor="apellidoMaterno">Apellido Materno:</label>
|
||||
<input type="text" id="apellidoMaterno" name="apellidoMaterno" />
|
||||
<label htmlFor="apellidoPaterno">Apellidos:</label>
|
||||
<input type="text" id="apellidoPaterno" onChange={cambiosAlumno} name='apellido' value={alumno.apellido} />
|
||||
</div>
|
||||
<div className="campo">
|
||||
<label htmlFor="nacionalidad">Nacionalidad:</label>
|
||||
<input type="text" id="nacionalidad" name="nacionalidad" />
|
||||
<input type="text" id="nacionalidad" onChange={cambiosAlumno} name="nacionalidad" value={alumno.nacionalidad} />
|
||||
</div>
|
||||
<div className="campo">
|
||||
<label htmlFor="correo">Correo:</label>
|
||||
<input type="correo" id="correo" name="correo" />
|
||||
<input type="email" id="correo" onChange={cambiosAlumno} name="correo" value={alumno.correo} />
|
||||
</div>
|
||||
</form>
|
||||
<div>
|
||||
<button type="submit" className='boton'>Registrarse</button>
|
||||
<button type="submit" className='boton' disabled={Cargando} onClick={procesarFormulario}>Registrarse</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -111,3 +111,8 @@ div a{
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
.gridContainer{
|
||||
width: 50%; /* Puedes ajustar esto según tus necesidades */
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,88 @@
|
|||
import './login.css'
|
||||
import React, {useState} from 'react';
|
||||
import './login.css';
|
||||
import { Link } from 'react-router-dom';
|
||||
import axios from 'axios';
|
||||
|
||||
function Login() {
|
||||
const [Cargando, setCargando] = useState(false);
|
||||
const [datosUsuario, setDatosUsuario] = useState({
|
||||
matricula: "",
|
||||
contrasena: "",
|
||||
});
|
||||
const [usuario, setUsuario] = useState({
|
||||
id: 0,
|
||||
nombre: "",
|
||||
contrasena: "",
|
||||
correo: "",
|
||||
});
|
||||
|
||||
const limpiar = () => {
|
||||
setDatosUsuario((prev) => ({
|
||||
matricula: "",
|
||||
contrasena: "",
|
||||
}));
|
||||
};
|
||||
//peticion al Backend para ver si el usuario existe en la BD
|
||||
const hacerPeticion = async () => {
|
||||
try {
|
||||
const res = await axios.post(
|
||||
"http://localhost:4567/usuarioValido",
|
||||
datosUsuario
|
||||
);
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
//peticion al Backend para regresar el usuario Iniciado
|
||||
const obtenerUsuario = async () => {
|
||||
try {
|
||||
const res = await axios.post(
|
||||
"http://localhost:4567/alumnoIniciado",
|
||||
datosUsuario
|
||||
);
|
||||
return res.data;
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
//prosesamiento de Uusario.
|
||||
const procesarFormulario = async (e) => {
|
||||
e.preventDefault();
|
||||
setCargando(true);
|
||||
|
||||
try {
|
||||
const res = await hacerPeticion();
|
||||
setCargando(false);
|
||||
|
||||
if (res.existe) {
|
||||
const aux = await obtenerUsuario();
|
||||
setUsuario({
|
||||
id: aux.id,
|
||||
nombre: aux.nombre,
|
||||
contrasena: aux.contrasena,
|
||||
correo: aux.correo,
|
||||
});
|
||||
alert("¡Bienvenido! " + aux.nombre);
|
||||
limpiar();
|
||||
window.location.href = '/home';
|
||||
} else {
|
||||
alert("Usuario No encontrado");
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
setCargando(false);
|
||||
}
|
||||
};
|
||||
|
||||
const cambiosUsuario = (e) => {
|
||||
const { name, value } = e.target;
|
||||
setDatosUsuario({
|
||||
...datosUsuario,
|
||||
[name]: value,
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<body>
|
||||
|
@ -12,11 +94,12 @@ function Login() {
|
|||
<div className='loginColum'>
|
||||
<h1>Bienvenido</h1>
|
||||
<form className='Formulario'>
|
||||
<label id='usuario'>Usuario:</label>
|
||||
<input type='text' id='usuario'/>
|
||||
<label id='usuario'>Matricula:</label>
|
||||
<input type='text' id='usuario' onChange={cambiosUsuario} value={datosUsuario.matricula} name='matricula'/>
|
||||
<label>Contraseña:</label>
|
||||
<input type="password" id='password'/>
|
||||
<button id='button' >Iniciar sesion</button>
|
||||
<input type="password" id='password' onChange={cambiosUsuario} value={datosUsuario.contrasena} name='contrasena'/>
|
||||
<a><Link to='/registro'>¿Aún no te has registrado?</Link></a>
|
||||
<button id='button' typeof='submit' disabled={Cargando} onClick={procesarFormulario} >Iniciar sesion</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,16 +1,18 @@
|
|||
import React from 'react'
|
||||
import ReactDOM from 'react-dom/client'
|
||||
import React from 'react';
|
||||
import { createRoot } from 'react-dom/client'; // Importar desde "react-dom/client"
|
||||
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
|
||||
import Login from './login.jsx'
|
||||
import Registro from './Registro.jsx';
|
||||
import OfertaEducativa from './OfertaEducativa.jsx'
|
||||
|
||||
|
||||
import './Registro.css'
|
||||
import './login.css'
|
||||
|
||||
|
||||
ReactDOM.createRoot(document.getElementById('root')).render(
|
||||
createRoot(document.getElementById('root')).render(
|
||||
<React.StrictMode>
|
||||
<OfertaEducativa/>
|
||||
</React.StrictMode>,
|
||||
)
|
||||
|
||||
|
||||
<Router>
|
||||
<Routes>
|
||||
<Route path='/' element={<Login />} />
|
||||
<Route path='/registro' element={<Registro />} />
|
||||
<Route path='/home' element={<OfertaEducativa />}/>
|
||||
</Routes>
|
||||
</Router>
|
||||
</React.StrictMode>
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue