Giriş yapmadınız.

#1 30.04.2019 09:15:59

legendm
Üye
Kayıtlı: 30.04.2019
Mesajlar: 4

Blade Sandbox

Herkese Merhabalar

Uzerinde calistigim bir proje geregi laravel icerisindeki viewlar proje yayinlandiktan sonra duzenlenebilir oluyor ve bu viewlara ek olarak functions.php adini verdigim dosya ile viewlarda yazdiginiz ozel kodlar calisabiliyor. Ornegin ldap baglantisi vb gibi. Teorik olarak laravel in buyuk faydasini gorup bu mantigi cok rahat bir sekilde hayata gecirebiliyorum fakat bunlari birbirinden izole edemiyorum.

1. Laravel'in helper lari ve Eloquentin artilari sebebiyle duzenlenebilen viewlar icerisinden tum objelere erisilip duzenlenebiliyor.
2.Direk laravel icerisinde calistigi icin her turlu islemde sinir olamiyor.

Cozum olarak bulabildigim ilk kaynak twig. Twig ile viewlar tamamen izole edilip bir sandbox icerisinde calisabiliyor. Birkac gundur denemeler yapiyorum ve cogu anlamda isimi goruyor. Fakat twig de herseyi filtreledigi icin tekrar bir ldap baglantisi yapmak istediginizde twig php kodu calismaniza izin vermiyor dogal olarak. Ben helper class i olusturup onu twig e inject edebiliyorum fakat tum fonksiyonlar icin bunu tek tek yapmam gerekli ve twig de <?php ?> gibi bir kod mantigi olmadigi icin yine is gormuyor. Variable olusturmak bile apayri bir syntax e sahip.

Ikinci cozum olarak, blade'i ayri bir render engine olarak kullanmak. Hali hazirda laravel disarisinda calisan cok fazla blade paketleri var. Bunlar teorik olarak is gorebiliyor fakat bunlar da php fonksiyonlarini sinirlamamin bir yolu yok maalesef. Ayrica kullandirtmak istedigim belli basli helper fonksiyonlari ni da efektif olarak o view'a nasil aktarabilirim bilemiyorum. Ayrica blade icerisinde kotu niyetli biri cok rahat bir sekilde laravel'e dahil olabiliyor bildiginiz gibi. Bu yuzden include vb fonksiyonlarin engellenmesi sart.

Onerilere acigim, tam dogru yolu maalesef bulamiyorum. Yardimlarinizi bekliyorum

Saygilarimla

Çevrimdışı

#2 30.04.2019 12:04:13

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,474
Website

Çevrimdışı

#3 30.04.2019 12:15:47

legendm
Üye
Kayıtlı: 30.04.2019
Mesajlar: 4

Yanıt: Blade Sandbox

sineld yazdı:

Yapmak istediğiniz tam olarak nedir?

Kisaca ozetlemem gerekirse.

Yaptigim uygulamayi bir android isletim sistemi olarak dusunelim. Insanlar sisteme zip dosyalari ile sonradan kod ekleyip calistirabiliyor. Benim tek istedigim birebir android'de de oldugu gibi o indirilen dosyalarin ( blade dosyalari ) bir sandbox icerisinde calismasi ve sistem icerisindeki fonksiyonlara erisememesi. Yani, zip icerisinde atiyorum \App\User:all()->delete(); benzeri bir kod calistiramasinlar.

Çevrimdışı

#4 30.04.2019 12:52:14

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,623
Website

Yanıt: Blade Sandbox

Ben yapmak istedğinizi anladım, aklıma ilk gelen alternatif bir BladeCompiler (SandboxBladeCompiler gibi mesela), FileViewFinder vs hazırlamak. Bunu araştırabilirsiniz. Ben de eve geçince zamanım olursa kontrolü sizde olan ayrı bir Compiler hazırlamaya çalışabilirim, söz vermiyorum elbette smile

Çevrimdışı

#5 30.04.2019 12:55:40

legendm
Üye
Kayıtlı: 30.04.2019
Mesajlar: 4

Yanıt: Blade Sandbox

mgsmus yazdı:

Ben yapmak istedğinizi anladım, aklıma ilk gelen alternatif bir BladeCompiler (SandboxBladeCompiler gibi mesela), FileViewFinder vs hazırlamak. Bunu araştırabilirsiniz. Ben de eve geçince zamanım olursa kontrolü sizde olan ayrı bir Compiler hazırlamaya çalışabilirim, söz vermiyorum elbette smile

Tesekkurler, bende su an ona bakiyordum. Fakat alternatif compiler kursam bile garip bir sekilde laravel'e bagli oluyor. compileString methodu ile yaptigimda $__env->make tarzi seyler goruyorum. Saniyorum ki $__env dedigimiz kismi da ayrica paylasiyorlar her ne kadar farkli compiler olsa bile.

Duzenleme: Ayrica ben bu tarz birseyin kesinlikle blade icerisinde olmasi gerektigini dusunuyorum. Symfony'de twig bunu tamamen sagliyor. Ilginizi cekiyorsa bu tarz da bir katki yapip pr atmanizi sahsen tavsiye ederim. Bende elimden geldigince yapmaya calisacagim.

Son düzenleyen legendm (30.04.2019 13:00:00)

Çevrimdışı

#6 30.04.2019 13:31:32

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,623
Website

Yanıt: Blade Sandbox

Ayrı bir compiler önermemin sebebi neyin filtrelenip neyin filtrelenmeyeceğini, neyin çalışıp neyin çalışmayacağını kontrol edebileceğinizi düşünmem. Bu sayede kendinize özel bir sandbox ortamı kurabilirsiniz. Şablonlar ayrı klasörde tutulur, uzantıları .blade.php olmaz farklı olur vs.

Blade üzerinden gitmenize de gerek yok, kendi derleyicinizi de Blade derleyicisinden esinlenerek hazırlayabilirsiniz. Bu iş sizin bu işe ne kadar zaman ayıracağınızla alakalı.

Çevrimdışı

#7 09.05.2019 08:11:45

legendm
Üye
Kayıtlı: 30.04.2019
Mesajlar: 4

Yanıt: Blade Sandbox

Çözüm olarak
-Grup olarak viewların çalışacağı farklı processler için birer linux kullanıcısı eklemek ( Projemde 8 farklı view grubu olduğu için aşırıya kaçmıyor)
-Php Command line üzerinden viewları compile etmek.

Son olarakta, gerekli helperları inject etmek için örneğin arrayları json'a çevirip command line parametresi olarak iletmek.

Önerileriniz için teşekkür ederim.

Çevrimdışı

Forum alt kısmı