deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

EasyAdmin 5.10 özel aksiyonlarda yetkileri zorunlu kılıyor ve varlık bazlı onay diyalogları ekliyor

EasyAdmin 5.10 artık özel aksiyonlara tanımlanan yetkileri zorunlu kılıyor, onay diyaloglarının varlığa göre değişmesine izin veriyor, alan bazlı badge varyantları ekliyor ve admin ile ilgisi olmayan isteklerde servis oluşturmayı bırakıyor.

EasyAdmin 5.10 özel aksiyonlarda yetkileri zorunlu kılıyor ve varlık bazlı onay diyalogları ekliyor

EasyAdmin 5.10 yayınlandı. Javier Eguiluz'un dev.to'daki duyurusuna göre Symfony admin bundle'ı artık özel aksiyonlara tanımlanan yetkileri zorunlu kılıyor, onay diyaloglarının değiştirilen varlığa göre değişmesine izin veriyor, alan bazlı badge stillendirmesi getiriyor, kendi stillerini taşıyan bir bayrak bileşeni sunuyor, UI Kit'e bir form alanı referans sayfası ekliyor ve backend ile ilgisi olmayan isteklerde servislerini oluşturmaktan kaçınıyor. Bu sürüm ayrıca EasyAdmin 5.9 ile gelen yeniden tasarımdan kalan sorunları da düzeltiyor.

Özel aksiyonlar nihayet yetkilerini zorunlu kılıyor

Tarihsel olarak EasyAdmin, yetkileri yalnızca kendi içinde gelen aksiyonlar için, örneğin edit ve delete için doğruluyordu. Özel aksiyonlarda setPermission() veya disable() çağırmak sadece düğmeyi arayüzden kaldırıyordu; geliştirici metot içine denyAccessUnlessGranted() gibi bir kontrol eklemeyi hatırlamazsa, altta yatan rota açık kalıyordu.

Bu boşluk artık kapatıldı. configureActions() içinde tanımlanan yetki tek doğruluk kaynağı: EasyAdmin düğmeyi gizliyor ve kullanıcının gerekli role sahip olmaması durumunda doğrudan URL erişimini de 403 yanıtıyla reddediyor. Bu zorunluluk linkToCrudAction() ile bağlanan aksiyonların yanı sıra aynı CRUD controller üzerindeki özel bir aksiyon rotasına karşı linkToRoute() kullananları da kapsıyor. Bu metotların içine daha önce elle yazılmış kontroller çalışmaya devam ediyor ve yalnızca gereksiz hale geliyor, yani herhangi bir kod değişikliği gerekmiyor.

Duyuru, eski davranışın bir güvenlik açığı değil, belgelenmiş bir davranış olduğunu vurguluyor; çünkü geliştiricilerin kendi rotalarını koruması bekleniyordu. Yine de yeni varsayılan, unutulması kolay bir adımı ortadan kaldırıyor.

Satıra uyum sağlayan onay mesajları

Bir aksiyon çalışmadan önce modal gösteren askConfirmation() metodu daha önce her satır için paylaşılan tek bir mesaj alıyordu. phcorp'dan gelen bir katkı bunu değiştiriyor: metot artık aksiyon etiketlerinin halihazırda çalıştığı şekilde, varlığı parametre alan bir closure da kabul ediyor.

Closure, genel mesaj için true, o varlık için aksiyonun hiçbir onay olmadan çalışması için false, ya da özel bir mesaj için bir string veya TranslatableInterface nesnesi döndürebiliyor. Özel mesajlar çevriliyor ve %action_name%, %entity_name% ve %entity_id% yer tutucularını hâlâ destekliyor. Duyuru iki kullanım senaryosu veriyor: bir kategoriyi silmenin gönderilerini de kaldırdığı konusunda uyarmak ve yayımlanmış içeriklerde onay isterken taslakların hemen arşivlenmesi.

Badge stilleri üzerinde daha ince kontrol

EasyAdmin 5.8'den beri Crud::setBadgeVariant() tüm bir dashboard veya CRUD controller için badge görünümünü belirliyordu. 5.10 sürümü, badge oluşturan tekil alanlara bir setBadgeVariant() metodu ekliyor: AssociationField, BooleanField, ChoiceField, CollectionField, CurrencyField, LanguageField ve LocaleField. Bu metot, light, solid, outline ve dot arasından bir string veya bir BadgeVariant enum değeri kabul ediyor. Alan düzeyindeki varyant, controller düzeyindeki ayarı geçersiz kılıyor ve hiçbiri yapılandırılmadığında badge'ler light görünümüne geri dönüyor.

Kendi stillerini taşıyan bir bayrak bileşeni

Backend içinde bayrak ikonları yuvarlatılmış köşeler ve hafif bir kontur alıyor; böylece Japonya veya Polonya bayrakları gibi büyük beyaz alanlara sahip bayraklar arka plana karışmıyor. Bu kurallar daha önce bundle'ın CSS'indeydi, dolayısıyla bayrak Twig bileşenini bir uygulamada başka yerde yeniden kullanmak onu elle stillendirmek anlamına geliyordu. Bileşen artık kendi stillerini içeriyor ve köşe yuvarlatmayı ve konturu yapılandırmak için radius ve bordered adında iki prop kazanıyor.

UI Kit içinde bir form alanı referansı

Kendi dashboard'unuz içindeki bir dizi önizleme sayfası olan UI Kit, EasyAdmin'ın yerel olarak desteklediği her alan türünü içeren bir form barındıran yeni bir sayfa kazanıyor; metin girişlerinden ve editörlerden seçimlere, tarihlere, koleksiyonlara ve dosya yüklemelerine kadar. Geliştiricinin dashboard'u içinde oluşturulduğu için projenin temasını ve özel CSS'ini alıyor ve açma kapama anahtarları, alanları yardım mesajlarıyla, doğrulama hatalarıyla veya devre dışı durumda önizlemenizi sağlıyor. UI Kit'in geri kalanı gibi bu sayfa da yalnızca debug modunda var ve üretimde gösterilmiyor.

Admin olmayan isteklerde daha az iş

EasyAdmin çalıştıran uygulamaların çoğu aynı zamanda genel bir web sitesi veya bir API sunuyor, ancak bundle kendi servislerinin birçoğunu her istekte oluşturuyordu. Duyuruya göre bunun nedeni, Symfony'nin event listener'ları ve argument value resolver'ları gerekli olup olmadıklarını bilmeden önce oluşturması ve EasyAdmin'ınkilerin fabrikalara, kayıtlara ve route generator'a bağımlı olması. 5.10'da admin route subscriber tek bir service locator alıyor ve yalnızca isteğin backend'i hedeflediğini doğruladıktan sonra servisleri çekiyor; argument resolver'lar ise daha düşük bir öncelikte çalışıyor, böylece Symfony önce controller bağımlılıklarını çözüyor. Geliştiriciler bu iyileştirmeyi hiçbir şeyi değiştirmeden elde ediyor.

Neden önemli

Manşet değişiklik davranışsal: yetki zorunluluğu artık arayüzün zaten ima ettiği şeyle eşleşiyor ve gizli düğmeler ile açık rotalar arasındaki belgelenmiş ama hataya açık boşluğu kapatıyor; bunu da mevcut kodu bozmadan yapıyor. Varlık bazlı onaylar ve alan bazlı badge varyantları, gerçek admin iş akışlarında tekrar eden kodu azaltan daha küçük ergonomi kazançları. Tembel servis yüklemesi, EasyAdmin'ı genel bir frontend veya bir API ile birlikte çalıştıran her Symfony uygulamasına fayda sağlıyor. Halihazırda 5.x serisinde olan ekipler için bu, hızlıca alınması gereken düşük sürtünmeli bir yükseltme gibi görünüyor.

  • #symfony
  • #easyadmin
  • #php
  • #release-notes
  • #open-source

İlgili yazılar