Ana içeriğe geç

Giriş (Login)

Route

/login

Sayfanın Amacı

Kullanıcının kullanıcı adı ve parolasıyla kimlik doğrulaması yaparak uygulamaya oturum açmasını sağlamak.

Sayfada Bulunan Alanlar

  • "Platform" yazılı metin logosu.
  • Kilit durumunda gösterilen uyarı (kalan bekleme süresi ile).
  • Başarısız deneme sayısı/kalan hak uyarısı (kilitlenmeden önce).
  • Genel hata uyarısı (kimlik bilgisi hatalı/ağ hatası vb.).
  • Form: Kullanıcı Adı alanı, Parola alanı (maskeli), "Giriş Yap" gönderim butonu (her iki alan doluyken görsel olarak "dolu" durumuna geçer).

Kullanıcı İşlemleri

  1. Kullanıcı adı ve parola girilir.
  2. "Giriş Yap" butonuna tıklanır veya form gönderilir.
  3. Başarılı girişte otomatik olarak Platformlar sayfasına (/platform) yönlendirilir.
  4. Üç başarısız denemeden sonra form 30 saniyeliğine kilitlenir; kilit süresi dolunca otomatik olarak tekrar denemeye izin verilir.

Kullanılan Veriler

  • Backend'den dönen token, user, opsiyonel username alanları (bkz. API Dokümantasyonu › Kimlik Doğrulama).
  • Zaten geçerli bir oturum varsa (Redux admin state doluysa), sayfa hiç render edilmeden /platform'a yönlendirilir.

Yetki ve Görünürlük

Herkese açık — oturum gerektirmez. Zaten oturumu olan kullanıcılar bu sayfayı göremez, otomatik yönlendirilir.

Kullanılan Bileşenler

  • dashboard/src/components/auth/Login.tsx — sayfanın ana bileşeni.
  • dashboard/src/components/auth/AuthLayout.tsx — giriş sayfasına özel, kenar menüsüz sayfa çerçevesi.
  • dashboard/src/components/hooks/useLoginLockout.tsx — 3 başarısız denemeden sonra 30 saniyelik kilit mantığı.
  • dashboard/src/services/authService.tsx — gerçek backend giriş isteği (loginRequest).
  • dashboard/src/services/auditService.tsx — başarılı girişin denetim günlüğüne kaydı (logPlatformStep, arka planda, sayfa akışını etkilemez).

API İletişimi

İşlem Metot Endpoint Kullanım amacı
Giriş yapma POST /login Kullanıcı adı/parola doğrulama, JWT token alma
Giriş denemesi kaydı POST /iqv_platform_log Başarılı giriş sonrası denetim günlüğü kaydı (arka planda, hataları kullanıcıya yansımaz)

Ayrıntılı istek/yanıt sözleşmesi için bkz. API Dokümantasyonu › Kimlik Doğrulama.

Durum Yönetimi

  • Form alanları: yerel React state (useState, Form.useForm).
  • Giriş kilidi (deneme sayısı, kilit bitiş zamanı): localStorage (iqv_login_attempts, iqv_login_lockout_until) — Redux'ta değil.
  • Başarılı giriş sonrası oturum: Redux admin slice'ına yazılır ve redux-persist ile localStorage'da (persist:IQV Platform anahtarı) kalıcı hale gelir; ayrıca eski sürümle uyumluluk için token/user doğrudan localStorage'a da yazılır.