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

main
Last change on this file since 8ca35dc was 8ca35dc, checked in by Aleksandar Panovski <apano77@…>, 4 months ago

Done with stupid timeslots

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