Bu proje, ASP.NET Core MVC kullanılarak geliştirilmiş kapsamlı bir kullanıcı yönetimi, rol sistemi, admin paneli, profil yönetimi ve birim test altyapısına sahip tam fonksiyonel bir web uygulamasıdır.
Proje; kullanıcı kayıt/giriş işlemleri, admin kontrol paneli, kullanıcı filtreleme, profil düzenleme, gelişmiş dashboard grafikleri ve birim testleri (XUnit) gibi modern özellikler içerir.
- Kayıt olma
- Giriş yapma
- Çıkış yapma
- Profil görüntüleme
- Profil düzenleme (ad, email, şifre)
- Profil resmi yükleme (wwwroot/uploads/profiles)
- Varsayılan layout üzerinden kişisel navbar gösterimi
- Tüm kullanıcıları listeleme
- Rol bazlı filtreleme (Admin / User)
- Durum filtreleme (Aktif / Pasif)
- Arama (isim veya e-posta)
- Kullanıcı detay sayfası
- Kullanıcı düzenleme
- Profil fotoğrafı değiştirme
- Kullanıcı silme / pasif etme
- Toplam kullanıcı sayısı
- Aktif kullanıcı sayısı
- Pasif kullanıcı sayısı
- Admin sayısı
- Son 5 kullanıcı listesi
- Son 7 gün kayıt grafiği (Chart.js)
- Rol dağılımı Pie Chart
- Aktif/Pasif Bar Chart
Admin ilk login olduğunda otomatik Admin/Index sayfasına yönlendirilir.
| Teknoloji | Amaç |
|---|---|
| ASP.NET Core MVC | Backend & UI |
| Entity Framework Core | ORM & Veritabanı |
| EF Core InMemory | Test veritabanı |
| XUnit | Unit test sistemi |
| Chart.js | Dashboard grafikler |
| Bootstrap 5 | UI düzeni |
| LINQ | Filtreleme & sorgular |
| IWebHostEnvironment | Dosya yönetimi |
| Razor Views | Frontend |
UserLoginRegister │ ├── Controllers │ ├── AccountController.cs │ ├── AdminController.cs │ └── HomeController.cs │ ├── Data │ └── AppDbContext.cs │ ├── Models │ ├── User.cs │ └── ViewModels/ │ ├── Views │ ├── Account/ │ ├── Admin/ │ ├── Home/ │ └── Shared/ │ ├── UserLoginRegisterTests (XUnit) │ ├── AccountControllerTests.cs │ ├── FakeWebHostEnvironment.cs │ └── ... │ └── wwwroot ├── css ├── js ├── lib └── uploads/profiles/
Test projesi tamamen izole çalışır, gerçek veritabanına dokunmaz.
Microsoft.EntityFrameworkCore.InMemory kullanır.
- Boş parola → Error
- Boş email → Error
- Geçersiz email → Error
- Aynı email iki kez kayıt → Error
- Doğru kayıt → Başarılı
- Yanlış email → Error
- Yanlış parola → Error
| Şifre | Rol | |
|---|---|---|
| admintest@example.com | Password1+ | Admin |
(Projede ilk çalıştırmada otomatik oluşturulmuş olabilir ya da manuel eklenir.)

#Docker Kullanımı (Containerized Deployment)
Bu proje tamamen containerize edilmiştir ve hem .NET 8 Web App hem de SQL Server 2022 Docker üzerinde birlikte çalışacak şekilde yapılandırılmıştır.
Tüm container’lar docker-compose ile tek komutla ayağa kalkmaktadır.
- Gereksinimler
Aşağıdaki yazılımların sistemde kurulu olması gerekir:
Docker Desktop
.NET 8 SDK (Sadece geliştirme için)
2.Proje Yapısı
Projenin kök dizininde aşağıdaki dosyalar bulunur:
UserLoginRegister/ │ ├── Dockerfile ├── docker-compose.yml ├── UserLoginRegister/ → Web uygulaması └── UserLoginRegisterTests/ → Unit testler
3.SQL Server + Web App’i Birlikte Çalıştırma
Projeyi tek komutla çalıştırabilirsiniz:
docker compose up --build -d
| Servis | Açıklama |
|---|---|
| userlogin_sql | SQL Server 2022 container’ı |
| userlogin_web | .NET 8 Web uygulaması |
| userloginapp_container | (Önceki build’lerden gelebilir) |
4.Uygulama Erişimi
Web uygulaması şu adresten çalışır:
5.Docker İçin Connection String
appsettings.json içinde local connection string yerine docker için:
"ConnectionStrings": { "DefaultConnection": "Server=sqlserver;Database=UserLoginRegisterDb;User Id=sa;Password=StrongPassword123!;TrustServerCertificate=True;" }
6.SQL Server Container İçine Bağlanma
Container terminaline gir:
docker exec -it userlogin_sql bash
SQL’e bağlan:
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P StrongPassword123!
Veritabanı Oluşturma (Docker İçinde)
SQL terminali açıldıktan sonra:
CREATE DATABASE UserLoginRegisterDb; GO
- Migration Uygulama
Migration’ları host makinede çalıştırabilirsiniz:
cd UserLoginRegister/UserLoginRegister dotnet ef database update
8.Tüm Servisleri Durdurmak docker compose down
- Unit testler tam izole çalışır, test veritabanı gerçek veritabanını etkilemez.
- Proje tamamen Clean MVC Architecture prensiplerine uygundur.
MIT License
Azad Koçak
Full Stack Developer
- Pasif kullanıcı → Error
- Doğru bilgiler → Başarılı login
Test sonucu örneği:
7 Tests — 7 Passed — 0 Failed