source: my-react-app/src/components/Login.js

main
Last change on this file was f5b256e, checked in by Aleksandar Panovski <apano77@…>, 3 weeks ago

Big change done works with handle_reservation_update() trigger

  • Property mode set to 100644
File size: 1.9 KB
Line 
1import React, { useState } from 'react';
2import axios from 'axios';
3import {useNavigate} from "react-router-dom";
4
5const Login = ({ onLogin }) => {
6 const navigate = useNavigate();
7 const [credentials, setCredentials] = useState({ username: '', password: '' });
8 const [error, setError] = useState('');
9
10 const handleChange = (e) => {
11 const { name, value } = e.target;
12 setCredentials({ ...credentials, [name]: value });
13 };
14
15 const handleSubmit = async (e) => {
16 e.preventDefault();
17 try {
18 const response = await axios.post('http://localhost:8081/api/login', {
19 email: credentials.username,
20 password: credentials.password
21 });
22 const { token } = response.data;
23
24 localStorage.setItem('token', token);
25
26 navigate("/")
27 } catch (error) {
28 console.error('Login failed:', error);
29 setError('Login failed. Please check your credentials and try again.');
30 }
31 };
32
33 return (
34 <div>
35 <h2>Login</h2>
36 <form onSubmit={handleSubmit}>
37 <div>
38 <label>Username:</label>
39 <input
40 type="text"
41 name="username"
42 value={credentials.username}
43 onChange={handleChange}
44 />
45 </div>
46 <div>
47 <label>Password:</label>
48 <input
49 type="password"
50 name="password"
51 value={credentials.password}
52 onChange={handleChange}
53 />
54 </div>
55 {error && <div style={{ color: 'red' }}>{error}</div>}
56 <button type="submit">Login</button>
57 </form>
58 </div>
59 );
60};
61
62export default Login;
Note: See TracBrowser for help on using the repository browser.