mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-01-23 10:45:27 +00:00
93 lines
2.2 KiB
JavaScript
93 lines
2.2 KiB
JavaScript
import React, { useState, useEffect } from 'react';
|
|
import { useNavigate } from 'react-router-dom';
|
|
import useAuthStore from '../../store/auth';
|
|
import {
|
|
Paper,
|
|
Title,
|
|
TextInput,
|
|
Button,
|
|
Checkbox,
|
|
Modal,
|
|
Box,
|
|
Center,
|
|
Stack,
|
|
} from '@mantine/core';
|
|
|
|
const LoginForm = () => {
|
|
const { login, isAuthenticated, initData } = useAuthStore(); // Get login function from AuthContext
|
|
const navigate = useNavigate(); // Hook to navigate to other routes
|
|
const [formData, setFormData] = useState({ username: '', password: '' });
|
|
|
|
useEffect(() => {
|
|
if (isAuthenticated) {
|
|
navigate('/channels');
|
|
}
|
|
}, [isAuthenticated, navigate]);
|
|
|
|
const handleInputChange = (e) => {
|
|
setFormData({
|
|
...formData,
|
|
[e.target.name]: e.target.value,
|
|
});
|
|
};
|
|
|
|
const handleSubmit = async (e) => {
|
|
e.preventDefault();
|
|
await login(formData);
|
|
initData();
|
|
navigate('/channels'); // Or any other route you'd like
|
|
};
|
|
|
|
// // Handle form submission
|
|
// const handleSubmit = async (e) => {
|
|
// e.preventDefault();
|
|
// setLoading(true);
|
|
// setError(''); // Reset error on each new submission
|
|
|
|
// await login(username, password)
|
|
// navigate('/channels'); // Or any other route you'd like
|
|
// };
|
|
|
|
return (
|
|
<Center
|
|
style={{
|
|
height: '100vh',
|
|
}}
|
|
>
|
|
<Paper
|
|
elevation={3}
|
|
style={{ padding: 30, width: '100%', maxWidth: 400 }}
|
|
>
|
|
<Title order={4} align="center">
|
|
Login
|
|
</Title>
|
|
<form onSubmit={handleSubmit}>
|
|
<Stack>
|
|
<TextInput
|
|
label="Username"
|
|
name="username"
|
|
value={formData.username}
|
|
onChange={handleInputChange}
|
|
required
|
|
/>
|
|
|
|
<TextInput
|
|
label="Password"
|
|
type="password"
|
|
name="password"
|
|
value={formData.password}
|
|
onChange={handleInputChange}
|
|
required
|
|
/>
|
|
|
|
<Button type="submit" size="sm" sx={{ pt: 1 }}>
|
|
Submit
|
|
</Button>
|
|
</Stack>
|
|
</form>
|
|
</Paper>
|
|
</Center>
|
|
);
|
|
};
|
|
|
|
export default LoginForm;
|