Bundles/RbnSuite — RBN Suite paketleri (panel + kimlik + içerik)
Doğrulanan kod tabanı:
d49b4413(dalfeat/fw-license-master) · Tarih: 2026-10-05 · Yayın: 0.9.7 = bu commit + sonrası; belge yalnız doğrulama anındaki kodu anlatır
Kaynak klasör:Bundles/RbnSuite/— 80*.php(RbnAdmin 49 · RbnAuth 15 ·
RbnStudio 16)
Envanter: 80 php dosyasının 80'i alt belgelerde anlatıldı.
Bu belge yalnız paketler arası ilişkileri ve ortak kalıpları anlatır; her
dosyanın ayrıntısı alt belgelerdedir.
1. Ne işe yarar, kimler kullanır
RbnSuite, framework'ün ürçteç" paket ailesidir: kullanıcıya görünen üç yüzü
(panel, giriş, içerik yönetimi) tek klasör altında toplanır ve üçü de aynı kayıt
mekanizmasını (#[Bundle] / #[Module] + ModuleData) kullanır. Diğer bundle
aileleri (Bundles/Internal/*) ya geliştirici/sistem içi yüzeylerdir ya da
alternatif sunum katmanlarıdır.
Yükleme sırası ve erişim kapısı:
index.php → Kernel → Routing
Core/Routes/Mappings/core.php:75
Route::middleware('admin') → AuthMiddleware + role:admin
Route::panel('admin')
Route::module('suite','RbnAdmin')->load() → RbnAdmin/Models/ModuleData::registerRoutes()
Route::module('suite','RbnStudio')->load() → RbnStudio/Models/ModuleData::registerRoutes()
Core/Routes/Mappings/auth.php:10
Route::module('Suite','RbnAuth')->prefix('') → elle yazılmış rotalar
Route::role('user')->prefix('user') → /user dashboard
RbnAuth'in rotaları ModuleData tarafından yüklenmez — registerRoutes()
metodu yoktur; rotaları framework'ün kendi haritasındadır. Diğer ikisi
kendi registerRoutes() metotlarını yazar.
2. Paket envanteri (80 php)
| Paket | *.php |
Belge | Alt belgeler | Kısa görev |
|---|---|---|---|---|
RbnAdmin/ |
49 | RbnAdmin/README.md | Controllers (11) · Models (3) · Providers+Services+Traits (7) · Views (28) | Yönetim paneli: dashboard, trafik, kullanıcı, ayar, cron, e-posta, SEO, mesaj, bildirim |
RbnAuth/ |
15 | RbnAuth/README.md | — | Kimlik doğrulama, oturum, rol/ACL, "beni hatırla", parola kurtarma, audit |
RbnStudio/ |
16 | RbnStudio/README.md | — | İçerik yönetimi: makale, haber, kategori, taslak + AI üretimi + sosyal paylaşım |
| Toplam | 80 | find Bundles/RbnSuite -name '*.php' \| wc -l = 80 |
Alt dal belgeleri yalnız RbnAdmin için üretildi: RbnAuth (15) ve RbnStudio (16)
< 20 php eşiğinin altında (bkz. docs/gorevler/DOC-REHBER-AGAC-SPEK.md §1, satır 11)
ve tam envanterleri tek belgede anlatılmıştır — hiçbir dosya atlanmamıştır.
3. Ortak kayıt kalıbı
Üç paket de aynı iki özniteliği kullanır, ama farklı ağırlıkta:
| Paket | ModuleData konumu |
#[Bundle] |
#[Module] (kontrolör) |
registerMap() |
registerRoutes() |
|---|---|---|---|---|---|
| RbnAdmin | Models/ModuleData.php |
✔ map: PanelMap::MAP (:21-25) |
✔ RbnAdminController (:17-21) |
3 servis + 2 provider | ✔ 10 grup / 60 uç (16'sı adlandırılmış) |
| RbnStudio | Models/ModuleData.php |
✔ map: StudioMap::MAP (:15-19) |
✔ RbnStudioController (:14-18) |
boş (:25-31) |
✔ 4 grup / 33 uç (33'ü de adlandırılmış) |
| RbnAuth | Models/ModuleData.php |
✘ | ✔ AuthController (:19) |
2 servis + 5 handler + 2 constant | ✘ (rotalar auth.php'te: 17 uç, 13'ü adlandırılmış) |
ModuleData::registerMap() çıktısı paket adı altında kayıt defterine karışır
(Core/System/Registries/SystemRegistry.php:44 üç ModuleData sınıfını da
listeler). registerRoutes() yalnız Route::module(…)->load() çağrıldığında
çalışır (Core/Routes/Route.php:139).
4. Paketler arası bağımlılık (kodda ölçülen)
| Kimden → Kime | Nasıl, nerede |
|---|---|
| RbnAdmin → RbnAuth | use ...RbnAuth\Models\AuthRole (UserManagementController.php:8); handler('access')->can('admin') (RbnAdmin/Services/RbnAdminService.php:27); rotalar AuthMiddleware grubunda (core.php:75) |
| Core → RbnAuth | RouteBlueprint::MIDDLEWARE['aliases']['auth'\|'guard'] = AuthMiddleware (RouteBlueprint.php:42); FormGuardHandler → AuthRole::BYPASS_ROLES (FormGuardHandler.php:162); AuthHandler → AuthIdentity (Core/Render/Handlers/UI/AuthHandler.php:6,30-31); BreadcrumbResolver → AuthRole::ROLES (:31) |
| Core → RbnAdmin | core.php:77 → ModalController; PanelHandler → PanelIdentity (Core/Render/Handlers/UI/PanelHandler.php:10); SystemLogicMapTrait:78 + SystemPhysicalMapTrait:79 → RbnAdminService / SocialMediaProvider; SystemResourceMapTrait:53 → ADMIN_ öneki |
| RbnStudio → RbnAdmin | getActiveSocialPlatforms() → provider('socialmedia') (RbnStudioController.php:276) = RbnAdmin\Providers\SocialMediaProvider (SystemPhysicalMapTrait.php:79) |
| RbnStudio → RbnAuth | dolaylı: rotaları admin middleware'i altında (core.php:85) |
Üçü → Core\Database |
project.user, project.userSecurity, project.userToken, project.userActivity, project.settings, project.cronLog, master.developer, master.ipBlock, master.cronJob, app.contentCategory, app.contentDraft |
5. Tuzaklar (paketler arası, ölçülmüş)
-
RbnAdminveRbnStudioaynıadminmiddleware grubunda yüklenir
(core.php:80), yaniAuthMiddleware::handle('admin')ikisine de uygulanır.
AuthRole::ADMIN_ROLESüyesi olmayan bir rol (moderatorseviye 60) ikisine de
giremez (RouteBlueprint.php:48→role:admin→ seviye 80). -
Rota adlandırma üç pakette üç farklı. RbnStudio'nın 33 ucu tamamen
adlandırılmış; RbnAdmin'ın 60 ucundan yalnız 16'sı adlandırılmış
(bot-settingsvecrongrupları); RbnAuth'ın 17 ucundan 13'ü adlandırılmış
(Core/Routes/Mappings/auth.php).returnPath()adlandırılmış rotaları
çözebildiği için bu tutarsızlık davranışı değiştirir. -
SocialMediaProvideriki pakete de hizmet veriyor ve RbnAdmin içinde
durumlu (stateful) bir nesne. RbnStudio her platform için ayrı
getPlatform()çağırır (güvenli, çünkü değerleri hemen kopyalar),
RbnAdminall()ile dizi döner. İki desen kasıtlıdır
(RbnAdmin Providers §5.9). -
İki ölü rota hedefi ölçüldü (her biri tek eşleşme, çağıranın kendisi):
POST /admin/users/store→UserManagementController@storeyok
(RbnAdmin Models §7.4)DraftsController::delete()→deleteDraft()yok (repository'de
destroyDraft()var) (RbnStudio §5.1)
İkisi deDispatcher'ın "metot yok" yoluna düşer (Core/Routes/Engine/Dispatcher.php:173).
Bu görev yalnız belge üretti; kod değiştirilmedi.
-
CSRF yüzeyi yalnız RbnStudio'da. Dört
Route::get('delete/{id}')kaydı
vardır (RbnStudio/Models/ModuleData.php:43,53,64,78); RbnAdmin'ın tüm silme
uçları POST'tur. RbnAuth ise GET çıkışı bilinçli tutuyor ama
çapraz-site isteklerde 403 ile kapatıyor (RbnAuth/README.md§3.2). -
RbnAuthtek pakettirregisterRoutes()yazmayan. Yeni bir RbnAuth ucu
eklemek içinCore/Routes/Mappings/auth.php'ye dokunmak gerekir; diğer iki
pakette bu işModels/ModuleData.phpiçinde yapılır. Bu, üç paket arasındaki
en pratik tuzaktır. -
Paneller arası hiyerarşi tek yönlüdür.
RouteBlueprint::CORE_MODULES = ['dashboard','RbnAdmin'](RouteBlueprint.php:94) ve
DASHBOARD_PREFIX = 'dashboard'(:99) tanımlıdır;RbnStudiobu listelerde
yoktur — çünkü kendi yol önekini (studio/…) rotalarında kendisi verir.
6. Örnek (gerçek koddan)
Bir paketin rotalarının framework tarafından yüklenmesi:
// Core/Routes/Route.php:139-155 (özet)
$dataClass = $baseNamespace . '\\Models\\ModuleData';
$moduleDataClass = class_exists($dataClass) ? $dataClass : $modelClass;
if (class_exists($moduleDataClass) && method_exists($moduleDataClass, 'registerRoutes')) {
$groupAttributes['namespace'] = $baseNamespace . '\\Controllers';
Router::getInstance()->group($groupAttributes, function () use ($moduleDataClass) {
(new $moduleDataClass())->registerRoutes();
});
}
ve panel kapısının RbnAuth'e bağımlılığı:
// Core/Routes/Mappings/core.php:75-86 (özet)
Route::middleware('admin')->group(function () {
Route::get('admin/modal/content', [\Rbn\Framework\Bundles\RbnSuite\RbnAdmin\Controllers\ModalController::class, 'content']);
Route::panel('admin')->group(function () {
Route::module('suite', 'RbnAdmin')->load();
Route::module('suite', 'RbnStudio')->load();
});
});
7. İlgili belgeler
- RbnAdmin · RbnAuth · RbnStudio
- Core/Routes —
Route::module(),RouteBlueprint, middleware grupları - kavramlar/01-mimari-harita
- Dizin indeksi