diff --git a/index.html b/index.html index d751e30..7b39d07 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,9 @@ - + - atakan-portal + Atakan
diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000..cd060cc Binary files /dev/null and b/public/logo.png differ diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx index 834725d..32a6c71 100644 --- a/src/pages/Home.jsx +++ b/src/pages/Home.jsx @@ -4,16 +4,10 @@ import { useNavigate } from 'react-router-dom'; import { Terminal, Globe, Shield, Database, Github, Twitter, Linkedin, Mail, Lock, X, ChevronRight, ExternalLink, - Coffee, Zap, Smartphone, Layers, Box, Server + Coffee, Zap, Smartphone, Layers, Box, Server, Loader2 // Loader2 eklendi } from 'lucide-react'; -// --- KULLANICI ADI VE ŞİFRE AYARLARI --- -const AUTH_CONFIG = { - username: "atakanzgn", - password: "atakanc123" -}; - -// --- YETENEKLER (Güncellendi) --- +// --- YETENEKLER --- const skills = [ { name: "Java", icon: , desc: "Core & Enterprise" }, { name: "Spring Boot", icon: , desc: "Microservices" }, @@ -50,16 +44,49 @@ export default function Home() { const [isModalOpen, setIsModalOpen] = useState(false); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); + + // Yeni State'ler const [error, setError] = useState(""); + const [isLoading, setIsLoading] = useState(false); + const navigate = useNavigate(); - const handleLogin = (e) => { + const API_URL = "https://api.atakanzgn.com.tr/login"; + + const handleLogin = async (e) => { e.preventDefault(); - if (username === AUTH_CONFIG.username && password === AUTH_CONFIG.password) { - sessionStorage.setItem('isAuthenticated', 'true'); - navigate('/portal'); - } else { - setError("Hatalı kullanıcı adı veya şifre!"); + setError(""); + setIsLoading(true); + + try { + const response = await fetch(API_URL, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + username: username, + password: password + }), + }); + + const data = await response.json(); + + if (response.ok) { + // Başarılı giriş: Token'ı sakla + // Backend'den { token: "..." } veya { accessToken: "..." } döndüğünü varsayıyoruz. + sessionStorage.setItem('authToken', data.token || data.accessToken); + sessionStorage.setItem('user', JSON.stringify(data.user)); // Opsiyonel: Kullanıcı bilgisini sakla + navigate('/portal'); + } else { + // Backend'den gelen hata mesajını göster + setError(data.message || "Giriş başarısız. Bilgileri kontrol edin."); + } + } catch (err) { + console.error("Login hatası:", err); + setError("Sunucuya bağlanılamadı. Lütfen daha sonra tekrar deneyin."); + } finally { + setIsLoading(false); } }; @@ -99,7 +126,6 @@ export default function Home() { {/* --- HERO BÖLÜMÜ --- */}
- {/* Renkleri Java/Backend temasına uygun (Turuncu/Kırmızı) güncelledim */}
@@ -124,7 +150,7 @@ export default function Home() {
- {/* --- HAKKIMDA (Güncellendi) --- */} + {/* --- HAKKIMDA --- */}

@@ -144,7 +170,7 @@ export default function Home() {

- {/* --- YETENEKLER (Güncellendi) --- */} + {/* --- YETENEKLER --- */}

Teknik Yetkinlikler

@@ -240,25 +266,35 @@ export default function Home() { setUsername(e.target.value)} + disabled={isLoading} />
setPassword(e.target.value)} + disabled={isLoading} />
{error &&

{error}

} - diff --git a/src/pages/Portal.jsx b/src/pages/Portal.jsx index 05751e4..f9e8fcb 100644 --- a/src/pages/Portal.jsx +++ b/src/pages/Portal.jsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import React, { useEffect, useState } from 'react'; import { motion } from 'framer-motion'; import { GitBranch, Video, Mail, Cloud, Puzzle, ArrowRight, ArrowLeft, LogOut } from 'lucide-react'; import { Link, useNavigate } from 'react-router-dom'; @@ -23,17 +23,31 @@ const cardVariants = { export default function Portal() { const navigate = useNavigate(); + // Kullanıcı adını state'ten veya storage'dan alalım + const [user, setUser] = useState({ name: "Atakan" }); // Sayfa yüklendiğinde güvenlik kontrolü yap useEffect(() => { - const isAuth = sessionStorage.getItem('isAuthenticated'); - if (isAuth !== 'true') { - navigate('/'); // Giriş yoksa ana sayfaya at + // Backend'den aldığımız token'ı kontrol ediyoruz + const token = sessionStorage.getItem('authToken'); + const userData = sessionStorage.getItem('user'); + + if (!token) { + navigate('/'); // Token yoksa ana sayfaya at + } + + if (userData) { + try { + setUser(JSON.parse(userData)); + } catch (e) { + // JSON parse hatası olursa varsayılan kalır + } } }, [navigate]); const handleLogout = () => { - sessionStorage.removeItem('isAuthenticated'); + sessionStorage.removeItem('authToken'); + sessionStorage.removeItem('user'); navigate('/'); }; @@ -54,7 +68,8 @@ export default function Portal() {

Yönetim Portalı

-

Hoş geldin, Atakan. Servisler aktif.

+ {/* Kullanıcı adını dinamik gösterelim */} +

Hoş geldin, {user.username || user.name || "Admin"}. Servisler aktif.