Giriş yapmadınız.

#1 25.02.2013 01:00:44

ersanserkan
Üye
Yer: Ankara
Kayıtlı: 11.02.2013
Mesajlar: 5

Admin, member, public yapısını nasıl olşuturabilirim?

Merhaba,

Yeni başlayacağım bir projede 3 farklı alana ihtiyacım olacak. Bunlar;

1. Public Sayfalar (Anasayfa, hakkımızda gibi üyelik gerektirmeyen genel kullanıcıların görebileceği alanlar)
2. Kullanıcı Alanı (Sadece kayıtlı kullanıcıların işlemlerini yapabileceği kontrol paneli)
3. Admin Alanı (Sadece admin yetkisi bulunan kullanıcılarının ulaşabileceği kontrol paneli)

Sizce bu yapıyı oluştururken nasıl bir yol izlemeliyim?

Ayrıca hem kullanıcı hem admin olarak farklı hesaplarla nasıl aynı anda giriş sağlayabilirim? (Admin kontrol panelinde "müşteri olarak giriş yap" özelliği ve bu yolla gidilen müşteri kontrol panelinde "admin kontrol paneline dönüş yap" linklerinin olmasını istiyorum. Kullanıcı bilgilerini session içinde saklamam güvenli olur mu?

Selamlar, teşekkürler..

Not: Authentication sistemi için Sentry kullanmak istiyorum fakat önerilerinize açığım

Çevrimdışı

#2 25.02.2013 12:27:15

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

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Bence bu işlem için sentry çok uygun, kullanım klavuzunda gerekli örnekler ve kodlar da mevcut.

Çevrimdışı

#3 25.02.2013 17:14:40

Echo
Üye
Kayıtlı: 30.12.2012
Mesajlar: 51
Website

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Bahsettiğin olay RBAC. (Role-Based Access Control) Laravel RBAC diye aratırsan işe yarayacak şeylere ulaşırsın wink

Çevrimdışı

#4 25.02.2013 17:50:57

ersanserkan
Üye
Yer: Ankara
Kayıtlı: 11.02.2013
Mesajlar: 5

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Zamanınızı ayırıp cevapladığınız için teşekkür ederim. Yabancı forumlarda bir mesajda "http://forums.laravel.io/viewtopic.php?id=728" bu sistemi hem farklı bundlelar oluşturarak, hemde aplication içinde klasörler halinde oluşturabileceği yazılmış. Bundle olarak oluşturmanın daha sonra tekrar kullanabilme dışında avantajı var mı?

Teşekkürler

Son düzenleyen ersanserkan (25.02.2013 17:52:45)

Çevrimdışı

#5 25.02.2013 18:24:24

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

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Ben bir projemde benzer uygulama yaptım ve bundle olarak tasarladım herşeyi, düzen ve nizam açısında çok iyi oldu.
Onun dışında bir artısı var mı bilmiyorum.

Çevrimdışı

#6 25.02.2013 23:14:40

drlinux
Moderatör
Yer: İstanbul
Kayıtlı: 28.12.2012
Mesajlar: 98
Website

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Bu işler için kendinizi yormadan yıpratmadan Sentry kullanmanızı tavsiye ederim. Yazdığımız CMS üzerinde ve kişisel projelerimde Sentry kullanmaktayım.

Selamlar.


Man is a slow, sloppy and brilliant thinker; the machine is fast, accurate and stupid. ~ William M. Kelly

Çevrimdışı

#7 12.04.2013 00:57:22

grodt
Üye
Kayıtlı: 02.04.2013
Mesajlar: 7

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Merhabalar, sentry kullanımını bir salağa anlatır gibi anlatan bir kaynak mevcut mu bildiğiniz? laravel'le ilgili insanların neredeyse hepsinin belli bir php seviyesinin üstünde olması sebebiyle tutoriallar falan da yeni gelen biri için anlaşılır olmuyor çoğu zaman. Ben ilk defa bir projemde rbac sistemi kullanacağım, catalyst.com'daki açıklamalar pek birşey ifade etmiyor bana.

Bir de kendi sitelerinde sentry 2.0 için sadece laravel 4.0 kurulumu var, önceki versiyonlar için desteği yok mu artık?

Bi süre daha tıkanırsam, işi ameleliğe vurup, her rol için ayrı model, ayrı controller, ayrı login, ayrı view yapacağım. eminim yüreğiniz el vermez böyle bişey yapmama, yardımcı olursunuz smile çok salak bi adam da sayılmam aslında ama nasıl olduysa bu rbac bilemedin acl olayının mantığını bir türlü idrak edemedim.

Çevrimdışı

#8 12.04.2013 01:45:12

drlinux
Moderatör
Yer: İstanbul
Kayıtlı: 28.12.2012
Mesajlar: 98
Website

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Kendime not: Yarın zaman bulursam ekleyeyim bir şeyler...

Son düzenleyen drlinux (12.04.2013 01:45:40)


Man is a slow, sloppy and brilliant thinker; the machine is fast, accurate and stupid. ~ William M. Kelly

Çevrimdışı

#9 12.04.2013 08:03:16

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

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Sentry ve L4'ü birleştirerek hazırlanmış güzel bir repo var: L4withSentry
İncelemeni tavsiye ederim.

Çevrimdışı

#10 12.04.2013 12:01:07

drlinux
Moderatör
Yer: İstanbul
Kayıtlı: 28.12.2012
Mesajlar: 98
Website

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

grodt yazdı:

Merhabalar, sentry kullanımını bir salağa anlatır gibi anlatan bir kaynak mevcut mu bildiğiniz? laravel'le ilgili insanların neredeyse hepsinin belli bir php seviyesinin üstünde olması sebebiyle tutoriallar falan da yeni gelen biri için anlaşılır olmuyor çoğu zaman. Ben ilk defa bir projemde rbac sistemi kullanacağım, catalyst.com'daki açıklamalar pek birşey ifade etmiyor bana.

Bir de kendi sitelerinde sentry 2.0 için sadece laravel 4.0 kurulumu var, önceki versiyonlar için desteği yok mu artık?

Bi süre daha tıkanırsam, işi ameleliğe vurup, her rol için ayrı model, ayrı controller, ayrı login, ayrı view yapacağım. eminim yüreğiniz el vermez böyle bişey yapmama, yardımcı olursunuz smile çok salak bi adam da sayılmam aslında ama nasıl olduysa bu rbac bilemedin acl olayının mantığını bir türlü idrak edemedim.

Laravel 4 mü kullanıyorsunuz 3 mü?


Man is a slow, sloppy and brilliant thinker; the machine is fast, accurate and stupid. ~ William M. Kelly

Çevrimdışı

#11 12.04.2013 13:12:29

grodt
Üye
Kayıtlı: 02.04.2013
Mesajlar: 7

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

drlinux yazdı:

Laravel 4 mü kullanıyorsunuz 3 mü?

laravel 3 kullanıyorum şu an.

Çevrimdışı

#12 12.04.2013 13:34:42

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

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Laravel 3 ile uyumlu olan kısma 1.1 master adresinden gidiyorsun, bundle sayfası burada
Versiyon 1.1 için klavuz ise burada.

Çevrimdışı

#13 12.04.2013 13:40:37

grodt
Üye
Kayıtlı: 02.04.2013
Mesajlar: 7

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

sineld yazdı:

Sentry ve L4'ü birleştirerek hazırlanmış güzel bir repo var: L4withSentry
İncelemeni tavsiye ederim.

Teşekkürler, bunu incelerim ancak laravel 4 le başlamak istemiyorum projeme. biraz büyükçe bir proje yapmaya çalışıyorum, kendimce çözmem gereken çok şey var, bir de laravel in bugları çıkarsa karşıma duşa girip cenin pozisyonunda ağlamaya başlarım herhalde smile

Çevrimdışı

#14 12.04.2013 15:04:18

grodt
Üye
Kayıtlı: 02.04.2013
Mesajlar: 7

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

sineld yazdı:

Laravel 3 ile uyumlu olan kısma 1.1 master adresinden gidiyorsun, bundle sayfası burada
Versiyon 1.1 için klavuz ise burada.

sıradan tüm örnekleri yaparak anlamaya çalışıyorum, permissions kısmında takıldım gene.

try
{
    // Update current group permissions
    $permissions = array(
        'is_admin'   => 1, // add is_admin,
        'can_edit'   => 1, // add can_edit,
        'can_delete' => 1, // remove can_delete
    );

    if (Sentry::group('admin')->update_permissions($permissions))
    {
        // Group permissions were updated
    }
    else
    {
        // Group permissions were not updated
    }
}
catch (Sentry\SentryException $e)
{
    $errors = $e->getMessage();
}

1- Burada verdiğim can_edit, can_delete izinlerini nasıl ayrıştırıyorum? Yani şöyle admin tüm postları editlesin, kullanıcı sadece kendi postunu editlesin, bunu nasıl ayırıyoruz birbirinden?
2- Şimdi burada can_edit iznini verdim admine tamam. ama bu izni controller'da yada route da nasıl kontrol edeceğim?

Çevrimdışı

#15 12.04.2013 15:18:18

drlinux
Moderatör
Yer: İstanbul
Kayıtlı: 28.12.2012
Mesajlar: 98
Website

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

grodt yazdı:
sineld yazdı:

Laravel 3 ile uyumlu olan kısma 1.1 master adresinden gidiyorsun, bundle sayfası burada
Versiyon 1.1 için klavuz ise burada.

sıradan tüm örnekleri yaparak anlamaya çalışıyorum, permissions kısmında takıldım gene.

try
{
    // Update current group permissions
    $permissions = array(
        'is_admin'   => 1, // add is_admin,
        'can_edit'   => 1, // add can_edit,
        'can_delete' => 1, // remove can_delete
    );

    if (Sentry::group('admin')->update_permissions($permissions))
    {
        // Group permissions were updated
    }
    else
    {
        // Group permissions were not updated
    }
}
catch (Sentry\SentryException $e)
{
    $errors = $e->getMessage();
}

1- Burada verdiğim can_edit, can_delete izinlerini nasıl ayrıştırıyorum? Yani şöyle admin tüm postları editlesin, kullanıcı sadece kendi postunu editlesin, bunu nasıl ayırıyoruz birbirinden?
2- Şimdi burada can_edit iznini verdim admine tamam. ama bu izni controller'da yada route da nasıl kontrol edeceğim?

Route filter kullanarak misal:

Route::get('/admin/album/delete/(:num)',array('before'=>'check_right:can_delete_albums','as'=>'delete_album','uses'=>'[email protected]'));


Route::filter('check_right', function ($right)
{

	if (!Sentry::check())//Giriş yapılmış mı?
	{
		return Redirect::to_route('admin_login');

	}

	if (!Sentry::user()->has_access($right))//Yapmış, peki hakkı var mı bunu yapmaya
	{
		//logout
		Sentry::logout();
		// has no access
		return View::make('error.access_error');
	}

});

Ama tabi Route pattern de kullanılabilir:

Route::filter('pattern: admin/album*', 'check_right:can_delete_albums');

Siz kullanıcıların kendi postu olup olmadığını da kontrol edecek ufak bir check i controller tarafında yapabilirisiniz.

Son düzenleyen drlinux (12.04.2013 15:22:58)


Man is a slow, sloppy and brilliant thinker; the machine is fast, accurate and stupid. ~ William M. Kelly

Çevrimdışı

#16 13.04.2013 14:21:37

grodt
Üye
Kayıtlı: 02.04.2013
Mesajlar: 7

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

drlinux yazdı:

Route filter kullanarak misal:

Route::get('/admin/album/delete/(:num)',array('before'=>'check_right:can_delete_albums','as'=>'delete_album','uses'=>'[email protected]'));


Route::filter('check_right', function ($right)
{

	if (!Sentry::check())//Giriş yapılmış mı?
	{
		return Redirect::to_route('admin_login');

	}

	if (!Sentry::user()->has_access($right))//Yapmış, peki hakkı var mı bunu yapmaya
	{
		//logout
		Sentry::logout();
		// has no access
		return View::make('error.access_error');
	}

});

Ama tabi Route pattern de kullanılabilir:

Route::filter('pattern: admin/album*', 'check_right:can_delete_albums');

Siz kullanıcıların kendi postu olup olmadığını da kontrol edecek ufak bir check i controller tarafında yapabilirisiniz.

Teşekkür ederim, tonla soruyla geleceğim tekrar smile . tamamen çözdüğüm zaman meseleyi, bir sentry tutorial ı yazmayı planlıyorum. her yeni gelen, benim gibi rahatsız etmesin sizleri smile)

Çevrimdışı

#17 09.05.2013 15:07:43

grodt
Üye
Kayıtlı: 02.04.2013
Mesajlar: 7

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

bir süredir ara verdiğim projeme kaldığım yerden devam ediyorum.

Şimdi sentry'de eloquent yada fluent kullanamıyorum. örneğin istiyorum ki bir kullanıcı listesi oluşturayım burada kullanıcıların gruplarını istediğim gibi değiştireyim. sentry'de bu işi yapmak için çok fazla query kullanmam gerekiyor.
örneğin kullanıcı isimlerini topluca listelemek istesem yapmam gereken şöyle birşey.

foreach(Sentry::user()->all() as $u)
    $user = Sentry::user($u['id']);
    echo $user->get('metadata.first_name');
endforeach;

bunun yerine db de fazladan bir user model i oluştursam, ve her kullanıcı için sentry tablolarında tutulan bilgiyi bu tabloda birleştirsem. bu sayede eloquent i kullanabilirim. böyle yapmak yanlış mı olur? yani amacım sentry'i login, register, auth, permissions ve groups kontol, kaydetme ve güncelleme fonksiyonları için kullanmak. geri kalan herşey için gene eloquent i kullanmak. bana çok sıkıntı olmaz gibi geldi ama birde bilenlere sorayım istedim.

Çevrimdışı

#18 15.05.2013 09:37:19

ytsejam
Üye
Kayıtlı: 13.05.2013
Mesajlar: 65

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Sentry ile eloquenti beraber kullanmak için User modeli yaratmanız yeterli oluyor. izinler ise sadece true, false mantığında çalışıyor. Bu arada laravel 4 şu an bir çok konuda hazır, ve sizin istediğiniz şeyleri yapmak daha kolay. Ben de bir göz atmanızı tavsiye ederim.

Çevrimdışı

#19 15.05.2013 15:57:52

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

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

Ben mevcut projelerimde Sentry'yi tercih ediyorum.
http://four.laravel.com/docs/eloquent#relationships sayfasını incelersen aradığını bulabilirsin.

Çevrimdışı

#20 20.05.2013 15:36:05

grodt
Üye
Kayıtlı: 02.04.2013
Mesajlar: 7

Yanıt: Admin, member, public yapısını nasıl olşuturabilirim?

ytsejam yazdı:

Sentry ile eloquenti beraber kullanmak için User modeli yaratmanız yeterli oluyor. izinler ise sadece true, false mantığında çalışıyor. Bu arada laravel 4 şu an bir çok konuda hazır, ve sizin istediğiniz şeyleri yapmak daha kolay. Ben de bir göz atmanızı tavsiye ederim.

ben biraz yeniyim bu mevzulara. o sebeple sadece hazır olmasına değil, stabil olmasına ve ortaya çıkabilecek sorunlarla ilgili arattığımda cevap bulabilmeme ihtiyacım var. 2. versiyonunu l4 le yaparım artık.

Çevrimdışı

Forum alt kısmı