+
Серверы
+ {servers.length === 0 ? (
+
У вас пока нет активных серверов.
+ ) : (
+
Список ваших серверов будет здесь...
+ )}
+
+ );
+};
+
+export default Servers;
\ No newline at end of file
diff --git a/ospabhost/frontend/src/pages/dashboard/settings.tsx b/ospabhost/frontend/src/pages/dashboard/settings.tsx
new file mode 100644
index 0000000..ba88322
--- /dev/null
+++ b/ospabhost/frontend/src/pages/dashboard/settings.tsx
@@ -0,0 +1,12 @@
+const Settings = () => {
+ return (
+ = ({ tickets }) => {
+ return (
+
+
Тикеты поддержки
+ {tickets.length === 0 ? (
+
У вас пока нет открытых тикетов.
+ ) : (
+
Список ваших тикетов будет здесь...
+ )}
+
+ );
+};
+
+export default Tickets;
\ No newline at end of file
diff --git a/ospabhost/frontend/src/pages/dashboard/types.ts b/ospabhost/frontend/src/pages/dashboard/types.ts
new file mode 100644
index 0000000..cebd8c5
--- /dev/null
+++ b/ospabhost/frontend/src/pages/dashboard/types.ts
@@ -0,0 +1,11 @@
+export interface User {
+ username: string;
+ operator: number;
+}
+
+export interface UserData {
+ user: User;
+ balance: number;
+ servers: unknown[];
+ tickets: unknown[];
+}
\ No newline at end of file
diff --git a/ospabhost/frontend/src/pages/login.tsx b/ospabhost/frontend/src/pages/login.tsx
index 73f31e8..107a779 100644
--- a/ospabhost/frontend/src/pages/login.tsx
+++ b/ospabhost/frontend/src/pages/login.tsx
@@ -1,33 +1,34 @@
import { useState } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import axios from 'axios';
+import useAuth from '../context/useAuth';
const LoginPage = () => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
+ const [error, setError] = useState('');
const navigate = useNavigate();
+ const { login } = useAuth();
const handleLogin = async (e: React.FormEvent) => {
e.preventDefault();
+ setError('');
+
try {
const response = await axios.post('http://localhost:5000/api/auth/login', {
email: email,
password: password,
});
- // Сохраняем токен в localStorage
- localStorage.setItem('access_token', response.data.token);
- localStorage.setItem('isLoggedIn', 'true');
- console.log('Успешный вход:', response.data);
- navigate('/dashboard'); // Перенаправляем на личный кабинет
- } catch (error) {
- let errMsg = 'Ошибка входа. Проверьте правильность email и пароля.';
- if (axios.isAxiosError(error)) {
- errMsg = error.response?.data?.message || errMsg;
- console.error('Ошибка входа:', error.response?.data || error.message);
+
+ login(response.data.token);
+ navigate('/dashboard/mainpage');
+
+ } catch (err) {
+ if (axios.isAxiosError(err) && err.response) {
+ setError(err.response.data.message || 'Неизвестная ошибка входа.');
} else {
- console.error('Ошибка входа:', error);
+ setError('Произошла ошибка сети. Пожалуйста, попробуйте позже.');
}
- alert(errMsg);
}
};
@@ -57,6 +58,9 @@ const LoginPage = () => {
Войти
+ {error && (
+ {error}
+ )}
Нет аккаунта?{' '}
diff --git a/ospabhost/frontend/src/pages/register.tsx b/ospabhost/frontend/src/pages/register.tsx
index ff8d959..5ce1e0d 100644
--- a/ospabhost/frontend/src/pages/register.tsx
+++ b/ospabhost/frontend/src/pages/register.tsx
@@ -6,27 +6,30 @@ const RegisterPage = () => {
const [username, setUsername] = useState('');
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
+ const [error, setError] = useState('');
const navigate = useNavigate();
const handleRegister = async (e: React.FormEvent) => {
e.preventDefault();
+ setError(''); // Очищаем предыдущие ошибки
+
try {
- const response = await axios.post('http://localhost:5000/api/auth/register', {
+ await axios.post('http://localhost:5000/api/auth/register', {
username: username,
email: email,
password: password
});
- console.log('Успешная регистрация:', response.data);
- navigate('/login'); // Перенаправляем пользователя на страницу входа
- } catch (error) {
- let errMsg = 'Ошибка регистрации. Пожалуйста, попробуйте снова.';
- if (axios.isAxiosError(error)) {
- errMsg = error.response?.data?.message || errMsg;
- console.error('Ошибка регистрации:', error.response?.data || error.message);
+
+ alert('Регистрация прошла успешно! Теперь вы можете войти.');
+ navigate('/login');
+
+ } catch (err) {
+ if (axios.isAxiosError(err) && err.response) {
+ const errorMsg = err.response.data.message || 'Неизвестная ошибка регистрации.';
+ setError(errorMsg);
} else {
- console.error('Ошибка регистрации:', error);
+ setError('Произошла ошибка сети. Пожалуйста, попробуйте позже.');
}
- alert(errMsg);
}
};
@@ -63,6 +66,9 @@ const RegisterPage = () => {
Зарегистрироваться
+ {error && (
+
{error}
+ )}
Уже есть аккаунт?{' '}