Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auth Log System

Full-stack authentication sistemi. Kullanıcı giriş/çıkış işlemlerini takip ediyor, hangi cihazdan giriş yapıldığını, IP adreslerini ve şüpheli aktiviteleri tespit ediyor.

Ne yapıyor?

  • JWT ile güvenli giriş sistemi (access token 15dk, refresh token 7 gün)
  • Şifreleri bcrypt ile hashliyor
  • Her işlemi logluyor (hangi cihaz, tarayıcı, IP vs.)
  • Yeni IP'den giriş olduğunda uyarı veriyor
  • Aynı anda farklı cihazlardan giriş yapılırsa bildiriyor
  • Başarısız giriş denemelerini sayıyor
  • Risk skoru hesaplıyor (0-100 arası)
  • Admin/moderator/user rolleri var

Teknolojiler

Backend:

  • Node.js + Express + TypeScript
  • MongoDB (Mongoose)
  • JWT authentication
  • bcryptjs
  • request-ip, ua-parser-js

Frontend:

  • Next.js 14
  • React 19
  • TypeScript
  • Tailwind CSS
  • Zustand (state)
  • Axios

Kurulum

Backend

cd backend
npm install
cp .env.example .env
# .env dosyasını düzenle (MongoDB URI ekle)
npm run dev

Backend http://localhost:5000 da çalışacak.

Frontend

cd frontend
npm install
npm run dev

Frontend http://localhost:3000 de açılacak.

.env Ayarları

Backend klasöründe .env dosyası oluştur:

PORT=5000
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/dbname
JWT_SECRET=buraya-uzun-random-string
JWT_REFRESH_SECRET=buraya-baska-uzun-random-string

JWT secret oluşturmak için:

node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"

Dosya Yapısı

backend/
├── src/
│   ├── controllers/       # Auth, admin, activity işlemleri
│   ├── middlewares/       # JWT doğrulama, rate limit
│   ├── models/           # User ve ActivityLog modelleri
│   ├── routes/           # API route'ları
│   ├── utils/            # Device parsing, güvenlik kontrolleri
│   └── server.ts
frontend/
├── app/
│   ├── login/           # Login sayfası
│   ├── register/        # Kayıt sayfası
│   └── dashboard/       # Ana panel (aktiviteler, cihazlar)
├── lib/api.ts          # Axios client
└── store/authStore.ts  # Zustand state

API Endpoint'leri

Auth:

  • POST /api/auth/register - Kayıt ol
  • POST /api/auth/login - Giriş yap
  • POST /api/auth/logout - Çıkış
  • POST /api/auth/refresh - Token yenile
  • GET /api/auth/me - Mevcut kullanıcı

Activity:

  • GET /api/activity/activities - Tüm aktiviteler
  • GET /api/activity/devices - Kullanılan cihazlar
  • GET /api/activity/sessions - Aktif oturumlar
  • GET /api/activity/stats/security - Güvenlik istatistikleri

Admin:

  • GET /api/admin/users - Tüm kullanıcılar
  • PUT /api/admin/users/:id/role - Rol değiştir
  • PUT /api/admin/users/:id/deactivate - Kullanıcıyı pasifleştir

Güvenlik Özellikleri

Sistem login sırasında şunları kontrol ediyor:

  1. Yeni IP: Son 30 günde bu IP'den giriş var mı?
  2. Farklı Cihaz: Son 1 saatte başka cihazdan giriş yapılmış mı?
  3. Başarısız Giriş: 15 dakikada 5'ten fazla yanlış deneme var mı?
  4. Rate Limit: Çok fazla istek atılıyor mu?

Risk skoru hesaplanıyor:

  • Yeni IP: +30
  • Çoklu cihaz: +25
  • Başarısız girişler: +10-20
  • Rate limit: +15

Toplam skor:

  • 0-30: Düşük risk
  • 31-60: Orta risk
  • 61-80: Yüksek risk
  • 81+: Kritik

Kullanım

  1. Kayıt ol (username, email, password)
  2. Giriş yap
  3. Dashboard'da aktivitelerini gör
  4. Hangi cihazlardan giriş yaptığını kontrol et
  5. Şüpheli bir durum varsa uyarı alırsın

Özellikler Detay

Dashboard'da ne var?

  • İstatistik Kartları: Toplam aktivite, başarılı/başarısız giriş sayısı, şüpheli aktivite
  • Son Aktiviteler Tablosu: İşlem tipi, cihaz, tarayıcı, IP, tarih
  • Cihazlarım: Hangi cihazlardan giriş yapmışsın, son kullanım tarihi

Güvenlik Uyarıları

Login yaptığında eğer:

  • Yeni bir IP'den giriyorsan → Uyarı gösterir
  • 1 saat içinde farklı cihazdan giriş yaptıysan → Bildirir
  • Çok fazla başarısız deneme varsa → Uyarır
  • Risk skorun yüksekse → Gösterir (LOW/MEDIUM/HIGH/CRITICAL)

Token Sistemi

  • Access token 15 dakika geçerli
  • Refresh token 7 gün geçerli
  • Access token bittiğinde otomatik yenilenir (axios interceptor)
  • Refresh token da bittiyse login sayfasına yönlendirir

Not

  • Token'lar localStorage'da tutuluyor
  • .env dosyası git'e pushlama (zaten .gitignore'da var)
  • Production'da extra güvenlik önlemleri al (HTTPS, helmet.js, vs.)

Geliştirme Fikirleri

  • Email doğrulama ekle
  • 2FA (iki faktörlü doğrulama)
  • Session'dan uzaktan çıkış yapma
  • Email bildirimleri (şüpheli aktivite için)
  • Geo-location tracking
  • Trusted device listesi

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages