Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP Admin Panel

Güvenlik odaklı, sıfır bağımlılıklı PHP yönetim paneli. Rol/yetki sistemi, denetim kaydı, 2FA ve çift dil (TR/EN) ile kullanıma hazır.

Sıfır bağımlılık: Composer yok, npm yok, build adımı yok. Dosyaları sunucuya kopyalayın, install.php adresini açın, panel çalışır.

Sıfır harici çağrı: Tüm CSS, JavaScript ve yazı tipleri pakete dahildir. Panel hiçbir CDN'e istek atmaz; intranet ve çevrimdışı kurulumlarda çalışır, kullanıcı IP'si üçüncü taraflara gitmez.


Özellikler

Güvenlik

Önlem Uygulama
SQL Injection Tüm sorgular PDO prepared statement; emülasyon kapalı
XSS Tüm çıktılar htmlspecialchars() ile kaçırılır
CSRF Her POST'ta hash_equals() ile token doğrulaması
Content-Security-Policy script-src nonce tabanlı — 'unsafe-inline' yok
Clickjacking frame-ancestors 'none' + X-Frame-Options
Açık yönlendirme Dönüş URL'leri panel dizinine kısıtlanır
Oturum HttpOnly, SameSite=Strict, strict mode, girişte ID yenileme
Oturum ömrü Hareketsizlik + toplam süre sınırı (ayarlanabilir)
Yetki tazeleme Rol ve yetkiler her istekte veritabanından okunur
Oturum kaçırma User-Agent parmak izi denetimi
Brute force IP bazlı hız sınırı + kullanıcı bazlı hesap kilidi
Şifre saklama password_hash() (bcrypt)
Şifre politikası Uzunluk, karmaşıklık ve yaygın-şifre denetimi (ayarlanabilir)
2FA TOTP (RFC 6238), QR kodu yerelde üretilir
Yetkisiz erişim Her sayfa ve her POST işlemi ayrı ayrı yetki kontrolünden geçer
Hata sızıntısı Üretimde yığın izi/SQL hatası gösterilmez, yalnızca loglanır
CSV enjeksiyonu Dışa aktarımda formül karakterleri etkisizleştirilir
Soft delete Kullanıcı ve roller silinmez, deleted_at ile işaretlenir

2FA notu: QR kodu includes/qr.php içindeki saf PHP kodlayıcı ile üretilir. TOTP secret'ı hiçbir zaman harici bir servise, tarayıcı geçmişine veya referrer başlığına düşmez.

Kullanıcı Yönetimi

  • Listeleme, oluşturma, düzenleme, soft-delete
  • Kullanıcı detayı: son giriş, IP, başarısız deneme, 2FA durumu, son işlemler
  • Rol atama — kendi seviyenizin üstüne çıkamazsınız
  • Hesap aktif/pasif ve kilit yönetimi
  • Kullanıcı adı veya e-posta ile giriş

Rol & Yetki Sistemi

  • Sınırsız rol ve yetki tanımı
  • Seviye bazlı hiyerarşi — kendi seviyenizdeki/üstündeki rollere dokunamazsınız
  • Yetki matrisi — tüm roller × yetkiler tek ekranda
  • Sahip olmadığınız bir yetkiyi başkasına atayamazsınız
  • Yerleşik yetkiler: ADMIN_PANEL_ACCESS, LOG_VIEW, ROLE_MANAGE, PERMISSION_MANAGE, USER_VIEW, USER_CREATE, USER_UPDATE, USER_DELETE

Hesap Yönetimi (self-service)

  • Profil sayfası — her kullanıcı, rolü ne olursa olsun kendi e-postasını ve şifresini değiştirebilir (mevcut şifre doğrulamasıyla)
  • 2FA kurulumu — QR ile bağla, kodla doğrula, kodla kapat
  • Şifre sıfırlama — yönetici, tek kullanımlık ve 1 saat geçerli bir bağlantı üretir. E-posta/SMTP yapılandırması gerekmez.

Denetim Kaydı

  • Giriş/çıkış, kullanıcı, rol ve yetki işlemleri otomatik loglanır
  • Eski/yeni değerler JSON olarak saklanır
  • Aksiyon, rol ve tarih aralığı filtresi + sayfalama
  • CSV dışa aktarım (Excel uyumlu UTF-8 BOM)

Arayüz

  • Açık/koyu tema — sistem tercihini izler, manuel geçiş kalıcıdır
  • Tam responsive (Bootstrap 5.3), mobil sidebar
  • Dashboard: sayaçlar, 7 günlük aktivite grafiği, son işlemler
  • Tablo araması, durum rozetleri, boş-veri durumları
  • Silme işlemleri için onay adımı

Çoklu Dil

  • Türkçe ve İngilizce tam destek (363 anahtar, iki dosya birebir eşleşir)
  • Yeni dil için lang/ altına tek dosya eklemek yeterli

Gereksinimler

Bileşen Minimum
PHP 8.1+
MySQL 8.0+ (veya MariaDB 10.4+)
PHP eklentileri pdo, pdo_mysql, mbstring, openssl
Web sunucusu Apache 2.4+ veya Nginx

XAMPP, Laragon, WAMP ve paylaşımlı hosting ortamlarında çalışır. Kurulum sihirbazı bu gereksinimleri sizin için denetler.


Kurulum

  1. Dosyaları yükleyin. Paketi sunucunuzdaki herhangi bir dizine açın — kök dizin, /admin, /panel fark etmez. Yollar otomatik algılanır.

  2. install.php adresini açın.

    https://siteniz.com/admin/install.php
    
  3. Formu doldurun. Sihirbaz sırasıyla:

    • sunucu gereksinimlerini denetler,
    • veritabanına bağlanır (yoksa oluşturmayı dener),
    • şemayı içe aktarır,
    • yönetici hesabınızı sizin belirlediğiniz şifreyle oluşturur,
    • config/config.php dosyasını yazar,
    • .htaccess içindeki hata sayfası yollarını günceller.
  4. install.php dosyasını silin. Kurulum bittiğinde sihirbaz kendini devre dışı bırakır, ancak dosyayı sunucudan kaldırmanız önerilir.

Bu pakette varsayılan kullanıcı adı/şifre yoktur. Yönetici hesabı yalnızca kurulum sırasında, sizin belirlediğiniz bilgilerle oluşturulur.

Elle kurulum

Sihirbazı kullanmak istemezseniz:

mysql -u kullanici -p -e "CREATE DATABASE admin_panel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u kullanici -p admin_panel < sql/admin-panel.sql
cp config/config.example.php config/config.php

config/config.php içindeki veritabanı bilgilerini doldurun, ardından ilk yönetici hesabını oluşturmak için yine install.php sayfasını kullanın.


Yapılandırma

Tüm ayarlar config/config.php içindedir. Açıklamalı örnek için config/config.example.php dosyasına bakın.

Ayar Varsayılan Açıklama
env production development hataları ekranda gösterir. Canlıda production olmalı.
base_url '' (otomatik) Panelin web yolu. Yalnızca otomatik algılama başarısız olursa doldurun.
app_name Admin Panel Panelin adı; 2FA uygulamasında da görünür.
session_idle_timeout 1800 Hareketsizlik sınırı (saniye). 0 = kapalı.
session_absolute_timeout 43200 Toplam oturum ömrü (saniye). 0 = kapalı.
password_min_length 10 En az karakter sayısı.
password_require_mixed_case true Büyük + küçük harf zorunlu.
password_require_number true En az bir rakam zorunlu.
password_require_symbol false En az bir sembol zorunlu.

Şifre politikası değişiklikleri kullanıcı oluşturma, düzenleme, profil ve şifre sıfırlama akışlarının tamamında aynı anda geçerli olur.


Dosya Yapısı

.
├── assets/
│   ├── css/admin.css              # Panel stilleri (açık + koyu tema)
│   ├── fonts/                     # Inter + JetBrains Mono (yerel)
│   └── vendor/                    # Bootstrap, Bootstrap Icons, Chart.js
├── config/
│   ├── config.example.php         # Açıklamalı yapılandırma şablonu
│   ├── db.php                     # PDO bağlantısı
│   └── .htaccess                  # Dizine dışarıdan erişimi engeller
├── errors/
│   ├── _page.php                  # Ortak hata sayfası şablonu
│   ├── 403.php  404.php  500.php
├── includes/
│   ├── bootstrap.php              # Yapılandırma, hata yönetimi, BASE_URL
│   ├── session.php                # Session başlatma + dil yükleme
│   ├── session_guard.php          # Zaman aşımı + yetki tazeleme
│   ├── require_admin.php          # Sayfa koruma zinciri
│   ├── require_permission.php     # hasPermission() / requirePermission()
│   ├── auth.php                   # Giriş tamamlama, başarısız deneme sayacı
│   ├── fingerprint.php            # Oturum kaçırma tespiti
│   ├── rate_limit.php             # IP bazlı giriş sınırlama
│   ├── validation.php             # Şifre politikası + CSV güvenliği
│   ├── password_reset.php         # Tek kullanımlık sıfırlama jetonları
│   ├── totp.php                   # TOTP (RFC 6238)
│   ├── qr.php                     # Saf PHP QR kodu üretici
│   ├── audit.php                  # logAction()
│   ├── lang.php                   # Dil sistemi + t()
│   └── .htaccess                  # Dizine dışarıdan erişimi engeller
├── lang/
│   ├── tr.php  en.php
├── layout/
│   ├── header.php  footer.php
├── sql/
│   └── admin-panel.sql            # Tam şema
├── docs/
│   ├── DEVELOPER-GUIDE.md         # Kendi modülünüzü nasıl eklersiniz
│   ├── CHANGELOG.md               # Sürüm geçmişi
│   └── LICENSE-THIRD-PARTY.md     # Üçüncü taraf lisans metinleri
├── examples/
│   ├── example_module.php         # Çalışan örnek modül (opsiyonel)
│   └── example-module.sql         # Örnek modülün tablosu + yetkileri
├── install.php                    # Kurulum sihirbazı (kurulumdan sonra silin)
├── login.php  logout.php  verify_2fa.php  reset_password.php
├── dashboard.php
├── users.php  create_user.php  edit_user.php  view_user.php
├── roles.php  edit_role.php  permissions.php
├── logs.php
├── profile.php  setup_2fa.php
├── set_lang.php
├── index.php                      # Kök adres → login/dashboard yönlendirme
├── README.md  LICENSE
└── .htaccess

Yeni Dil Ekleme

  1. lang/tr.php dosyasını lang/xx.php olarak kopyalayın ve çevirin.
  2. includes/lang.php içindeki _LANG_ALLOWED dizisine dil kodunu ekleyin.
  3. set_lang.php içindeki izin verilen diller listesine ekleyin.
  4. layout/header.php içindeki dil değiştiriciye bağlantıyı ekleyin.

İki dil dosyasının aynı anahtarları içerdiğini doğrulamak için tr.php ve xx.php anahtar listelerini karşılaştırın.


Üretim Kontrol Listesi

  • install.php sunucudan silindi
  • config/config.php içinde envproduction
  • HTTPS etkin (2FA ve oturum cookie güvenliği için)
  • config/ ve includes/ dizinlerine web'den erişilemiyor
  • Veritabanı kullanıcısına yalnızca gereken yetkiler verildi
  • Düzenli veritabanı yedeği planlandı

Üçüncü Taraf Bileşenler

Tümü pakete dahildir; ayrı indirme gerekmez. Lisans metinleri için docs/LICENSE-THIRD-PARTY.md dosyasına bakın.

Bileşen Sürüm Lisans
Bootstrap 5.3.3 MIT
Bootstrap Icons 1.11.3 MIT
Chart.js 4.4.4 MIT
Inter SIL Open Font License 1.1
JetBrains Mono SIL Open Font License 1.1

TOTP ve QR kodu üretimi harici kütüphane kullanmaz; ikisi de bu paket içinde saf PHP ile yazılmıştır.


Sürüm Geçmişi

Ayrıntılar için docs/CHANGELOG.md dosyasına bakın.

Lisans

MIT Lisansı — LICENSE dosyasına bakın. Serbestçe kullanabilir, değiştirebilir ve dağıtabilirsiniz; tek şart telif bildirimini korumaktır.

Pakete dahil üçüncü taraf bileşenler kendi lisanslarına tabidir (docs/LICENSE-THIRD-PARTY.md).

About

Güvenlik odaklı, sıfır bağımlılıklı PHP yönetim paneli — RBAC, TOTP 2FA, denetim kaydı

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages