Files
front_directorio/src/components/Login/LoginForm.js
T
2024-10-15 17:37:18 -06:00

84 lines
2.4 KiB
JavaScript

import React, { useState } from "react";
import "./LoginForm.css";
import { useLogin } from "../../services/auth.services";
const LoginForm = () => {
const [usuario, setUsuario] = useState("");
const [contraseña, setContraseña] = useState("");
const [rememberMe, setRememberMe] = useState(false);
const { login, error, loading } = useLogin();
const handleSubmit = async (e) => {
e.preventDefault();
if (!usuario || !contraseña) {
alert("Es necesario rellenar el usuario y la contraseña.");
return;
}
await login(usuario, contraseña, rememberMe);
};
return (
<div className="flex-grow-1 d-flex flex-column justify-content-center align-items-center">
<h1 className="text-warning">Bienvenido al directorio de profesores</h1>
<h2 className="m-3">Iniciar sesión</h2>
<form
onSubmit={handleSubmit}
className="bg-white p-4 rounded shadow-sm"
style={{ background: "#f9f9f9", borderRadius: "1em" }}
>
<div className="input-group">
<label htmlFor="username">Nombre de Usuario:</label>
<input
type="text"
id="username"
value={usuario}
onChange={(e) => setUsuario(e.target.value)}
disabled={loading}
required
/>
</div>
<div className="input-group">
<label htmlFor="password">Contraseña:</label>
<input
type="password"
id="password"
value={contraseña}
onChange={(e) => setContraseña(e.target.value)}
disabled={loading}
required
/>
</div>
<div className="input-group remember-me-group">
<input
type="checkbox"
id="rememberMe"
checked={rememberMe}
onChange={() => setRememberMe(!rememberMe)}
disabled={loading}
/>
<label htmlFor="rememberMe" className="remember-me-label">
Mantener la sesión
</label>
</div>
<button
type="submit"
disabled={loading}
className="btn btn-primary w-100"
>
Ingresar
</button>
{loading && <p>Cargando...</p>}
</form>
{error && (
<div className="alert alert-danger mt-3" role="alert">
{error}
</div>
)}
</div>
);
};
export default LoginForm;