import { useState, useEffect } from 'react'; import { Server, Eye, EyeOff } from 'lucide-react'; import { getTheme } from '../themes'; import { API_URL } from '../config'; import axios from 'axios'; export default function Auth({ onLogin }) { const [isLogin, setIsLogin] = useState(true); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [theme] = useState(localStorage.getItem('theme') || 'modern'); const [oidcProviders, setOidcProviders] = useState({}); const currentTheme = getTheme(theme); useEffect(() => { loadOidcProviders(); }, []); const loadOidcProviders = async () => { try { const { data } = await axios.get(`${API_URL}/api/auth/oidc/providers`); setOidcProviders(data); } catch (error) { console.error('Ошибка загрузки OIDC провайдеров:', error); } }; const handleOidcLogin = (provider) => { window.location.href = `${API_URL}/api/auth/oidc/${provider}/login`; }; const handleSubmit = async (e) => { e.preventDefault(); setError(''); setLoading(true); try { await onLogin(username, password, isLogin); } catch (err) { setError(err.message || 'Ошибка авторизации'); } finally { setLoading(false); } }; return (
{/* Logo */}

MC Panel

Панель управления Minecraft серверами

{/* Form Card */}
{/* Tabs */}
{/* Username */}
setUsername(e.target.value)} required className={`w-full ${currentTheme.input} ${currentTheme.border} border rounded-xl px-4 py-3 ${currentTheme.text} focus:outline-none focus:ring-2 focus:ring-blue-500 transition`} placeholder="admin" />
{/* Password */}
setPassword(e.target.value)} required className={`w-full ${currentTheme.input} ${currentTheme.border} border rounded-xl px-4 py-3 pr-12 ${currentTheme.text} focus:outline-none focus:ring-2 focus:ring-blue-500 transition`} placeholder="••••••••" />
{/* Error */} {error && (
{error}
)} {/* Submit Button */}
{/* OpenID Connect Providers */} {Object.keys(oidcProviders).length > 0 && (
Или войдите через
{Object.entries(oidcProviders).map(([providerId, provider]) => ( ))}
)} {/* Default Credentials */} {isLogin && (

Учётные данные по умолчанию:

none / none

)}
{/* Footer */}

© 2026 MC Panel. Все права защищены.

); }