Birlikte Çalışma
Amaç
Bu belge, WebBlocks CMS'in aynı uygulama içinde başka bir Laravel ana ürünüyle nasıl birlikte çalışması gerektiğini açıklar. Yalnızca mimari yönelimi kaydeder; kendi başına rota, config, migration, model, controller, kurulum, kayıt, davet veya kimlik doğrulama değişikliği uygulamaz.
Bağımsız CMS ile Ana Ürünle Birlikte Çalışma
WebBlocks CMS, uygulamanın ana yönetim deneyimine, herkese açık site görüntülemesine ve içerik operasyonlarına CMS'in sahip olduğu bağımsız bir CMS olarak çalışabilir.
WebBlocks CMS ayrıca başka bir Laravel ana ürününün yanına da kurulabilir. Bu modelde ana ürün kendi ürün sorumluluklarını korurken CMS isteğe bağlı web sitesi ve içerik yönetimi davranışı sağlar.
İsteğe Bağlı Web Sitesi/İçerik Katmanı Olarak CMS
Birlikte çalışma kurulumlarında CMS, isteğe bağlı bir web sitesi ve içerik katmanıdır. Ana ürünün alan kararlarını, ana ürün yetkilendirmesini veya ana ürün yönetim rotalarını devralmamalıdır.
CMS paket öncelikli kalmalı ve ana uygulamanın rotaları, config anahtarları, view ad alanları, tablo sahipliği ve diğer uygulama düzeyi sınırlarıyla çakışmalardan kaçınmalıdır.
Paylaşılan ana uygulamalarda paket kurulumu kaldığı yerden sürdürülebilir olmalıdır. Yeni CMS migration'larını çalıştırmadan önce webblocks:install, kısmi CMS tablo durumunu algılar ve mevcut CMS tablolarını, satır sayılarını, eşleşen migration satırlarını ve bilinen yabancı anahtar çakışmalarını bildirir. Boş kısmi CMS tabloları yalnızca açık --repair-partial kurulum bayrağıyla yeniden adlandırılabilir. Boş olmayan tablolar elle inceleme gerektirir ve otomatik olarak silinmemeli, yeniden adlandırılmamalı veya CMS'e aitmiş gibi ele alınmamalıdır.
Yönetim Öneki Yönelimi
CMS yönetim öneki yapılandırılabilir olmalıdır.
Birlikte çalışma kurulumları için önerilen CMS yönetim öneki /webadmin'dir. Ana uygulama /admin'in sahibi olabilir ve CMS, /admin'in her zaman kullanılabilir veya CMS'e ait olduğunu varsaymamalıdır. /cms yol bölümü, /cms/css, /cms/js ve /cms/brand gibi CMS statik varlıkları için ayrılmıştır.
Bağımsız kurulumlar artık kanonik CMS yönetim öneki olarak /webadmin kullanır. Belgeler, tasarım ve gelecekteki uygulama çalışmaları, mevcut davranışı ve daha uzun vadeli yapılandırılabilir önek yönelimini açıkça birbirinden ayrı tutmalıdır.
CMS yönetim önekleri hiçbir zaman fiziksel bir herkese açık varlık dizini bölümünü yeniden kullanmamalıdır. v1.32.56 sürümünde kanonik yönetim öneki /webadmin'e taşındı; çünkü Nginx try_files, Laravel rotayı görmeden önce /cms/'yi fiziksel public/cms/ dizini olarak çözebilir. /cms yalnızca varlıklar için kalmalıdır: CMS'e ait /cms yönetim takma adları veya yönlendirmeleri eklemeyin ve CMS'e ait /admin rotalarını geri getirmeyin.
Nihai çözüm, bir public/cms/index.php devri veya ön denetleyici köprüsüne dayanmak yerine rota/dosya sistemi çakışmasından tamamen kaçınır. public/cms/index.php hem kök herkese açık varlıklarda hem de paket herkese açık varlıklarında bulunmamaya devam etmelidir.
Herkese açık sayfalar, kanonik URL olarak Sayfa Çevirisi path değerini kullanır ve /docs/internal-content-api gibi eğik çizgi içeren yollar barındırabilir. Herkese açık sayfa catchall rotaları, /webadmin, /webadmin/api, /cms, /search, /search.json, /contact-messages, /install ve ana uygulama auth rotalarını sahibi olan rota dosyalarına bırakmaya devam etmelidir. /p/... yalnızca eski sürüm uyumluluğu içindir ve yeni bir kanonik URL olarak üretilmemelidir.
Yönetim Kaynak ve Eylem URL'leri
CMS tarayıcı yönetim rotaları /webadmin kullanır; /webadmin/api ise belirteç korumalı JSON API'leri için ayrılmıştır. Kaynak URL'leri öngörülebilir olmalıdır:
- koleksiyon:
/webadmin/{resource} - oluşturma:
/webadmin/{resource}/create - düzenleme:
/webadmin/{resource}/{id}/edit - üye eylemi:
/webadmin/{resource}/{id}/{action} - koleksiyon eylemi:
/webadmin/{resource}/{action}
Sayfa önizlemesi bir üye eylemidir: GET /webadmin/pages/{page}/preview. CMS sayfa önizleme rotalarını /admin, /cms, /webadmin/api, /webadmin/pages/preview/{page} veya /webadmin/preview/pages/{page} altında eklemeyin.
Kimliği doğrulanmış yönetim önizlemeleri, herkese açık yönlendirmeyi ayrı tutmalıdır. Yetkili CMS kullanıcıları için taslak veya incelemedeki sayfaya ait içeriği görüntüleyebilirler; ancak herkese açık sayfa rotası yalnızca yayında olan sayfaları ve yayında olan herkese açık içeriği sunmaya devam etmelidir.
Ana Uygulamaya Ait Oturum Açma
Paylaşılan bir Laravel ana uygulaması içinde oturum açma ve kayıt, ana uygulamanın sorumluluğudur. Paylaşılan users tablosu, kimlik ve oturum açma katmanıdır.
CMS, birlikte kurulmuş uygulamalarda yinelenen kullanıcı kimliği gerektirmemelidir. Pakete ait CMS auth rotaları etkinken CMS yönetim konuk yönlendirmeleri ve CMS auth ekranları, genel login rota adı yerine CMS'e ait /webadmin/login rota adı webblocks.auth.login'i kullanmalıdır; çünkü ana ürün, /quiztem/login gibi yollar için login'in sahibi olabilir. CMS auth'unu bilerek değiştiren ana uygulamalar yine kendi oturum açma akışlarına sahip olabilir; ancak paket CMS görünümleri ve middleware'i pakete ait rota adlarında kalmalıdır.
CMS'e Ait Yetkilendirme
Kimlik doğrulama yalnızca kullanıcının oturum açtığını kanıtlar. CMS erişimi vermez.
CMS yetkilendirmesi, CMS üyelik ve rol sistemi tarafından belirlenmelidir. CMS süper yönetici durumu kullanıcıyı ana ürün yöneticisi yapmaz; ana ürün yönetici durumu da kullanıcıyı CMS süper yöneticisi yapmaz.
Users Tablosu ve Yinelenen E-posta Davranışı
Paylaşılan bir Laravel ana uygulamasında users tablosu kimlik katmanıdır. CMS erişimi, aynı kişi için ikinci bir kullanıcı oluşturmakla değil, CMS'e ait üyelik veya rol kayıtlarıyla temsil edilir.
CMS kurulum, kayıt ve davet tasarımları, aynı e-posta adresi için yinelenen users satırları oluşturmamalıdır.
Kurulum/Davet/Kayıt Davranışı
CMS erişimi veren kurulum, davet ve kayıt akışları şu sırayı kullanmalıdır:
- Aynı e-posta adresine sahip mevcut bir ana uygulama kullanıcısı arayın.
- Varsa o kullanıcıyı yeniden kullanın.
- Yalnızca eşleşen bir ana uygulama kullanıcısı yoksa yeni bir kullanıcı oluşturun.
- Kimlik kaydı çözümlendikten sonra CMS üyelik veya rol kaydını ekleyin.
Süper yönetici durumu bir CMS üyelik veya rol atamasıdır; özel bir users kaydı türü değildir.
Rota Örnekleri
Yaygın birlikte çalışma yönlendirmesi net sahiplik etrafında tasarlanmalıdır:
/login-> ana uygulama kimliği ve oturum açma/admin-> ana ürünün yönetim alanı (ana ürünün böyle bir alanı varsa)/webadmin-> WebBlocks CMS yönetimi, birlikte çalışma kurulumları için önerilir/webadmin/login-> pakete ait CMS oturum açma, paket CMS auth rotaları etkinken/webadmin/forgot-passwordve/webadmin/reset-password/{token}-> pakete ait CMS parola sıfırlama ekranları, paket CMS auth rotaları etkinken/cms/...-> WebBlocks CMS statik varlıkları- herkese açık site rotaları -> istek için herkese açık içeriğin sahibi CMS olduğunda CMS herkese açık görüntüleme
Bağımsız CMS kurulumları, CMS'e ait yönetim rotaları için /webadmin kullanır; gelecekte yapılandırılabilir önek ayarları hâlâ hedef yönelimdir.
Pakete ait CMS auth görünümleri, CMS'e ait ekranlar için CMS önekli auth rotalarını kullanmalıdır: webblocks.auth.login, webblocks.auth.logout ve mevcut webblocks.auth.password.* adları. Paket auth rota kümesi CMS kaydı sunmuyorsa CMS oturum açma ekranı, ana uygulamaya ait kök /register rotasına işaret etmek yerine Kayıt bağlantısını hiç göstermemelidir.
Mevcut Uygulama ile Hedef Yönelim
Mevcut uygulama, kanonik CMS yönetim öneki olarak /webadmin kullanır ve CMS yönetim davranışını /admin veya /cms üzerinden bilerek sunmaz.
Hedef yönelim, yapılandırılabilir bir CMS yönetim öneki olmaya devam etmektedir; varsayılan /webadmin olduğundan ana ürün kendi yönetim alanı için /admin'i koruyabilir ve CMS varlıkları /cms altında kalabilir.
Uygulama bu yönelime yetişene kadar belgeler ve tasarımlar, mevcut davranışı mı yoksa hedef mimariyi mi tanımladıklarını açıkça belirtmelidir.
Kapsam Dışı
- Bu belge, CMS'i ana ürün yetkilendirmesinden sorumlu kılmaz.
- Bu belge, ana ürünlerin CMS'e bağımlı olmasını gerektirmez.
- Bu belge, kendi başına rota veya migration değişikliği uygulamaz.