richlai's picture
working on docker
902845d
import React, { useState } from 'react';
import PasswordInput from './ui/password';
import { useNavigate, Link } from 'react-router-dom';
import { useAuth } from '../services/AuthContext';
import loginBg from '../../public/images/salesbuddy_logo.jpg';
const Login = () => {
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
const [error, setError] = useState('');
const navigate = useNavigate();
const { login } = useAuth();
const handleSubmit = async (e) => {
e.preventDefault();
setError('');
const formData = new FormData();
formData.append('username', username);
formData.append('password', password);
try {
const response = await fetch('http://localhost:8000/token', {
method: 'POST',
body: formData,
});
const data = await response.json();
if (!response.ok) {
throw new Error(data.detail || 'Login failed');
}
login(data.access_token);
navigate('/');
} catch (err) {
setError(err.message);
}
};
return (
<>
<div className="grid-container">
<div className="column-a" style={{ backgroundImage: `url(${loginBg})` }}>
</div>
<div className="column-b">
<div className="login-panel">
<h6>Please provide your credentials:</h6>
<input className="textbox" type="text" placeholder="User" onChange={(e) => setUsername(e.target.value)} />
<PasswordInput onChange={(e) => setPassword(e.target.value)} />
<button onClick={handleSubmit}>Sign In</button>
<div style={{margin:"auto"}}>
<Link to="/register" className="text-blue-600 hover:text-blue-500">
Register?
</Link>
</div>
</div>
</div>
</div>
</>
);
};
export default Login;