Giriş yapmadınız.

#1 17.08.2013 01:32:38

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

[Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

Merhaba

Hazırladığım sitenin admin panelinde CKEditor ve CKFinder kullanıyorum. CKFinder'ın güvenlik sebebiyle dışarıdan girişlere kapalı olması gerekiyor. Onun için config.php dosyasında şöyle bir fonksiyonu var:

/**
 * This function must check the user session to be sure that he/she is
 * authorized to upload and access files in the File Browser.
 *
 * @return boolean
 */
function CheckAuthentication()
{
	// WARNING : DO NOT simply return "true". By doing so, you are allowing
	// "anyone" to upload and list the files in your server. You must implement
	// some kind of session validation here. Even something very simple as...

	// return isset($_SESSION['IsAuthorized']) && $_SESSION['IsAuthorized'];

	// ... where $_SESSION['IsAuthorized'] is set to "true" as soon as the
	// user logs in your system. To be able to use session variables don't
	// forget to add session_start() at the top of this file.
    
    return false;
}

Normalde açıklamada yazdığı gibi bir oturum değişkeni ile hallediyordum ama artık laravel kullandığım için oturum değişkenlerini bu dosya içinde kullanamıyorum. config/sessions.php içerisinde driver "native" olarak ayarlanmış durumda. Buna rağmen bağımsız bir dosyada

<?php
session_start();
print_r($_SESSION);

yaptığımda oturum dökümü yerine boş bir dizi alıyorum.

Array()

ckfinder'ın config.php dosyasına bir şekilde kullanıcının laravel Auth ile başarıyla giriş yaptığını göndermem gerekiyor.

...
if(Auth::attempt($data)) {
Session::put('ckfinder_enabled','enabled');
...
}
<?php
session_start();
/**
 * This function must check the user session to be sure that he/she is
 * authorized to upload and access files in the File Browser.
 *
 * @return boolean
 */
function CheckAuthentication()
{
	// WARNING : DO NOT simply return "true". By doing so, you are allowing
	// "anyone" to upload and list the files in your server. You must implement
	// some kind of session validation here. Even something very simple as...

	// return isset($_SESSION['IsAuthorized']) && $_SESSION['IsAuthorized'];

	// ... where $_SESSION['IsAuthorized'] is set to "true" as soon as the
	// user logs in your system. To be able to use session variables don't
	// forget to add session_start() at the top of this file.
    
if($_SESSION['ckfinder_enabled'] == 'enabled') {
    return true;
} else {
    return false;
}
}

şeklinde denedim ama olmadı ne yazık ki. Böyle basit birşeyde tıkanacağım hiç aklıma gelmezdi smile

Her türlü fikire açığım smile

Son düzenleyen mgsmus (22.08.2013 23:31:50)

Çevrimdışı

#2 17.08.2013 01:47:55

serturk
Üye
Kayıtlı: 31.05.2013
Mesajlar: 107

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

Auth::check() oturum açıksa true kapalıysa false döndürür.

function CheckAuthentication()
{
	// WARNING : DO NOT simply return "true". By doing so, you are allowing
	// "anyone" to upload and list the files in your server. You must implement
	// some kind of session validation here. Even something very simple as...

	// return isset($_SESSION['IsAuthorized']) && $_SESSION['IsAuthorized'];

	// ... where $_SESSION['IsAuthorized'] is set to "true" as soon as the
	// user logs in your system. To be able to use session variables don't
	// forget to add session_start() at the top of this file.
    return Auth::check();
}

denemedim ama bu şekliyle işinizi görür diye düşünüyorum.

Çevrimdışı

#3 17.08.2013 17:43:11

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

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

Ne yazık ki Auth sınıfını ya da herhangi bir laravel sınıfını bağımsız bir dosyada kullanabilsem oturum ile uğraşmama gerek kalmaz. public klasörüne bir php dosyası attığınızı düşünün. Bu dosya içerisinde laravel ile (Session::put()) oluşturulmuş bir oturum değişkenini nasıl gösterebilirim? Auth ile oturum açtıktan sonra

test.php

<?php
session_start();
print_r($_SESSION);

yapıyorum, Array() şeklinde boş dizi dönderiyor.

Çevrimdışı

#4 17.08.2013 18:59:01

serturk
Üye
Kayıtlı: 31.05.2013
Mesajlar: 107

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

Session::put ya da set diyerek atadığınız değeri $_SESSION ile okuyamazsınız, kişi Auth::attemp() ile oturum açtıktan sonra siz doğrudan $_SESSION['ckeditor'] = true; diye bir atama yaparak bunu $_SESSION ile okumayı deneyebilirsiniz.
Örneğin;

if (Auth::attempt( $user_data))
        {
            $_SESSION['ckeditor'] = true;
            return Redirect::to('dashboard');
        } else {
           ......
        }

kontrol

function CheckAuthentication()
{
    return $_SESSION['ckeditor'];
}

Bunlara ek olarak sisteminizin tam olarak ne olduğunu nasıl bir yapıda olduğunu bilmediğimden net bir şey söyleyemiyorum fakat burada doğrudan return true; döndürür, ckeditörün kullanacağı sayfalar da Auth::check() ile oturumu takip ederseniz ve oturum açık değilse, ckeditörün kullanıldığı sayfanın kullanılmasını iptal edebilirsiniz diye düşünüyorum. Ama dediğim gibi genel yapı ne durumda bilmediğimden kısıtlı fikirler üretilebiliyor.

Son düzenleyen serturk (17.08.2013 21:49:38)

Çevrimdışı

#5 17.08.2013 20:22:25

angelside
Üye
Kayıtlı: 26.12.2012
Mesajlar: 195
Website

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

config.php dosyasında CheckAuthentication() fonksiyonu içinde, kontrol yapıp TRUE döndürebilecek olan satırı aktif edip, laravel tarafında Auth::check() ile yapılacak sorgu sonucu "$_SESSION['IsAuthorized'] = TRUE" gibi bir atama yapılabilir gibi geliyor bana.

function CheckAuthentication()
{
	return isset($_SESSION['IsAuthorized']) && $_SESSION['IsAuthorized'];
}

CKFinder nasıl çalışıyor bilmiyorum ama entegrasyon dokümanında "$finder = new CKFinder();" şeklinde bir kullanım şekli mevcut, bunu laravel içinde kullanıyorsanız bunu da Auth::attemp() fonksiyonuna bağlayabiliriz, aynı şekilde tema kısmında olan javascript kodlarını da.

Son düzenleyen angelside (17.08.2013 20:23:26)


http://urltara.com - Aynı ip üzerinde olan diğer siteler ?

Çevrimdışı

#6 17.08.2013 23:44:53

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

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

Dediğiniz şekilde de denedim sonuç değişmedi. Laravel oturum ismi olarak "laravel_session" kullanıyormuş. session_start() dan önce session_name('laravel_session') yaparak da denedim, olmadı. Frameworklere yeni olduğum için aklıma pek fazla bir şey gelmiyor. Anlamadığım şey laravel native PHP oturumu kullanmasına rağmen boş bir php dosyasında session_start() ile oturum başlattığımda aynı domainde olmasına rağmen neden laravel'in oturumunu devam ettiremiyorum. Bunun kolay bir yolu olmalı.

Yardımlarınız için teşekkürler. Hala cevap aramaktayım.

Çevrimdışı

#7 18.08.2013 00:33:21

serturk
Üye
Kayıtlı: 31.05.2013
Mesajlar: 107

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

function CheckAuthentication()
{
    return true;
}

bunu bu şekliyle varsayılan olarak izinli ata, ckeditor ü ekrana bastığın sayfalar da

if (auth::check()) {
//editör için gerekli form kodlarını, javascript i vs. burada çalıştır.
}

bu şekilde yaparsan ck editor sürekli oturum izni olsa bile template dosyalarında ekrana basılmayacağından sorun yaşamazsın. Editor ekrana oturum açan kişilerde basılacağından senin istediğin olacaktır.

Çevrimdışı

#8 18.08.2013 00:49:10

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

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

@serturk
Bu şekilde sitede ckfinder'ın bulunduğu yeri bilen biri rahatlıkla dosya yükleyebilir. Admin girişi yaparsa elbette ulaşamayacak ama manuel girebilir:

Örneğin
domain.com/package/ckfinder/ckfinder.html yazdığı zaman ckfinder yine açılıyor.

Ben şu şekilde bir çözüm buldum:

ckfinder'ın config.php dosyasının başına

require __DIR__.'/../../../../bootstrap/autoload.php';
$app = require __DIR__.'/../../../../bootstrap/start.php';

eklediğimde sorun kalktı, laravel oturumunu kullanabildim ama bu benim gözümde hiç iyi bir yol değil ve bilmiyorum ama riskli olabilir.

Çevrimdışı

#9 18.08.2013 01:10:42

serturk
Üye
Kayıtlı: 31.05.2013
Mesajlar: 107

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

Cookie ya da veritabanı (veritabanı daha zahmetli) ile de çözülebilir zannediyorum. Fakat senin yaptığın şekliyle onun içinde tekrar load ediyor systemi.

Çevrimdışı

#10 22.08.2013 23:31:04

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

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

O kadar saç baş yolduktan sonra buldum! Umarım başka bir arkadaşa yardımcı olur da o da benim gibi saçlarını yolmaz big_smile

session_save_path($_SERVER['DOCUMENT_ROOT'].'/../app/storage/sessions'); // app/config/sessions.php içerisindeki files değerini değiştirmediğinizi varsayıyorum
session_name('laravel_session');
session_start();

Çevrimdışı

#11 23.08.2013 07:55:26

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

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

Çözümü paylaştığın için teşekkürler @mgsmus

Çevrimdışı

#12 30.09.2014 11:04:01

yalcinkaya
Üye
Kayıtlı: 26.08.2014
Mesajlar: 27

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

mgsmus yazdı:

O kadar saç baş yolduktan sonra buldum! Umarım başka bir arkadaşa yardımcı olur da o da benim gibi saçlarını yolmaz big_smile

session_save_path($_SERVER['DOCUMENT_ROOT'].'/../app/storage/sessions'); // app/config/sessions.php içerisindeki files değerini değiştirmediğinizi varsayıyorum
session_name('laravel_session');
session_start();

Bende bu tarz bir sorunla karşılaştım. Sizin yaptıklarını yaptım ama çalıştıramadım bir türlü. Tinymce de kullanmak istiyorum bende.

laravel'in hiç bir dosyasının yerini değiştirmedim.

<?php
session_save_path($_SERVER['DOCUMENT_ROOT'].'/../app/storage/sessions'); // app/config/sessions.php içerisindeki files değerini değiştirmediğinizi varsayıyorum
session_name('laravel_session');
session_start();
print_r($_SESSION);
/* Kullanıcı Dosya Yolu */
$path = null;
if($_SESSION['userImagePath'] != null)
	$path = $_SESSION['userImagePath'].'/';
/* Kullanıcı Dosya Yolu */

Edit :

Şeklinde deneyincede null değeri dönüyor ama anasayfada session'a ulaşabiliyorum

require __DIR__.'/../../../../../../../bootstrap/autoload.php';
$app = require __DIR__.'/../../../../../../../bootstrap/start.php';
/*
session_save_path($_SERVER['DOCUMENT_ROOT'].'/../app/storage/sessions'); // app/config/sessions.php içerisindeki files değerini değiştirmediğinizi varsayıyorum
session_name('laravel_session');
session_start();
*/
dd(Session::get('userImagePath'));
/* Kullanıcı Dosya Yolu */
$path = null;
//if(Session::get('userImagePath') != null)
	$path = Session::get('userImagePath').'/';
/* Kullanıcı Dosya Yolu */

Son düzenleyen yalcinkaya (30.09.2014 11:09:06)

Çevrimdışı

#13 30.09.2014 11:37:46

MURATSPLAT
Yönetici
Yer: Antalya
Kayıtlı: 06.05.2014
Mesajlar: 642
Website

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

laravel kurallarına çıktığınızda proje çöplüğe dönüyor. Bence laravel olanakları ile çözmeniz projenin gelişimi açısında çok daha yararlı olur.

Laravelle yazılan ama laravelle alakası olamayan 3-4 proje gördüm. Bu tür projeler bir noktadan sonra geliştirilemez hale geliyor.

Çevrimdışı

#14 30.09.2014 11:45:26

yalcinkaya
Üye
Kayıtlı: 26.08.2014
Mesajlar: 27

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

MURATSPLAT yazdı:

laravel kurallarına çıktığınızda proje çöplüğe dönüyor. Bence laravel olanakları ile çözmeniz projenin gelişimi açısında çok daha yararlı olur.

Laravelle yazılan ama laravelle alakası olamayan 3-4 proje gördüm. Bu tür projeler bir noktadan sonra geliştirilemez hale geliyor.


Hocam şimdi aklıma geldi tinycme paketi vardı daha önceden kullanmayı düşünmüştüm sonra vazgeçmiştim. Şimdi tekrar deneyim. Eğer çalıştırmayı başaramazsam bunun için nasıl bir yol izlemem gerekir.

Yapmak istediğim tinymce'nin içinde image upload var. Ben her kullanıcıya ayrı upload yolu vermek istiyorum.

Edit : Bu şekilde tinymce'yi hiç çalıştıramadım

Son düzenleyen yalcinkaya (30.09.2014 12:02:34)

Çevrimdışı

#15 30.09.2014 12:06:46

MURATSPLAT
Yönetici
Yer: Antalya
Kayıtlı: 06.05.2014
Mesajlar: 642
Website

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

https://github.com/barryvdh/laravel-elfinder

Bun bu paketi kullanıyorum. Elfinder dosya yöneticisi tinyMce ile de iletişime geçebiliyor.. Tersi de oluyor. Dökümantasyonunda örnekler var. Dikkatlice inceleğin..
Elfinder ayarlarını kurcalayarak muhtemelen dinamik yollar geliştirilebilirsiniz.

Çevrimdışı

#16 30.09.2014 12:13:33

yalcinkaya
Üye
Kayıtlı: 26.08.2014
Mesajlar: 27

Yanıt: [Çözüldü] Laravel oturumunu bağımsız bir dosyada nasıl kullanabilirim?

MURATSPLAT yazdı:

https://github.com/barryvdh/laravel-elfinder

Bun bu paketi kullanıyorum. Elfinder dosya yöneticisi tinyMce ile de iletişime geçebiliyor.. Tersi de oluyor. Dökümantasyonunda örnekler var. Dikkatlice inceleğin..
Elfinder ayarlarını kurcalayarak muhtemelen dinamik yollar geliştirilebilirsiniz.


Bakıyorum hocam şimdi

Edit:
Şu şekilde bir hata aldım.

Route::get('elfinder', 'Barryvdh\Elfinder\[email protected]');
/elfinder şeklinde girince bu hatayı veriyor.

Invalid backend configuration.
Readable volumes not available.

Son düzenleyen yalcinkaya (30.09.2014 12:26:06)

Çevrimdışı

Forum alt kısmı