Rbac - Dinamik

Merhabalar…

yii 1.5 versiyonundaki rbac hakkında yardıma ihtiyacım var.

Önce mantığını, hangi tablonun ne işe yaradığını anlatabilir misiniz?

youtube üzerinden bir video aracılığı birşeyler yaptım fakat dinamik olarak nasıl kullanacağımı tam anlamadım.

Authassignmen

Authitem

Authitemchild

yukarıdaki bu 3 tablo ne işe yarıyor? görevleri nedir?

Anladığım kadarıyla ;

Authitem : Rol bilgisi tutulacak. Örn. Superadmin

Authassignmen : Hangi kullanıcı hangi role sahip.

Authitemchild : bunu tam anlamadım.

SiteController.php dosyasında şu kod eklediğimde giriş yaptığım kullanıcı rolüne bakarak yetkilendirme yapılıyor.


 public function accessRules() {

    return array(

            array('allow',

                    'actions' => array("index"),

                    'roles' => array('superadmin'),

            ),

            array('deny',

                    'users' => array('*'),

            ),

        );

 }

Yapmak istediğim şu. accessRules dinamik olarak kullanmak istiyorum. ‘actions’ içine tek tek yazmak yerine kullanıcıya tanımladığım ‘action’ lar veritabanından gelsin. aynı şekilde ‘roles’ de veritabanından gelsin. Dinamik olarak oluşturduğum tüm ‘Controller’ yönetmek istiyorum.

Bu konuda bilgisi olan arkadaşlar yardımcı olurlarsa çok sevinirim.

Şimdiden teşekkür ederim.

Merhaba @Remark,

Yii frameworkte RBAC işlemleri http://en.wikipedia.org/wiki/Role-based_access_control linkindeki açıklamalar doğrultusunda yapılmakta.

Bu linklerdeki bilgiler doğrultusunda

http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#role-based-access-control

http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#defining-authorization-hierarchy

sayfadaki açıklamalara göre işlemlerinizi basic olarak yapabilirsiniz, bu adımı yapabildikten sonra diğer adıma yani otomatik hale getirmeye geçmenizi tavsiye ederim,

Bu işlemi dinamik hale getirmek için veritabanı tablolarıyla ilişkilendirmeniz yeterli olacaktır.

İstediğiniz işlemlerin yapıldığı örnek uygulama http://www.yiiframework.com/extension/rbac ve proje dosyalarını inceleyebilirsiniz,

kaynak kodu : https://bitbucket.org/hiscaler/rbac/src

download linki : https://bitbucket.org/hiscaler/rbac/get/6cc912b9a384.zip

http://www.yiiframework.com/wiki/328/simple-rbac

Son olarak RBAC basit bir işlem gibi görünsede aslında üzerinde durulması gereken bir konudur.

Sorunuza cevap verilmemesinin nedeni muhtemelen yeterli düzeyde bilenlerin azlığı veya bilenlerin benim gibi zaman bulamayışından dolayı foruma destek veremeyişleri ya da kim bilir belki farklı nedenler de olabilir.

Bu arada sorularınızın cevapları RBAC işlemlerini tam olarak açıklamaz. Baştan sona kadar detaylandırılarak örnek üzerinde açıklanmasını gerektiriyor. Foruma destek konusunda zaman bulabilirsem github üzerinde örnek uygulama yayınlamak isterdim. Aklıma gelmişken RBAC hakkında farklı kaynakları da araştırmanız sizin için faydalı olacaktır.

Saat 01:10 ve yarın mesai var :) şimdilik bu kadar.

iyi çalışmalar.

Teşekkürler Yahya.

Yii hakkında yeterli türkçe kaynak olmadığı için sanırım ülkemizde kullanımı az. laravel yeni olmasına rağmen eğitim ve dökümantasyona çok önem veriyorlar. Aynı durum yii içinde olsa sanırım popülerliği kimse elinden alamaz diye düşünüyorum.

Verdiğin kaynaklar için teşekkür ederim çok yararlı oldu. 3. tablonun görevinide tam olarak öğrenmiş oldum. Şuan formlarımı giix ile oluşturturuyorum. Giix auth template ile işimi kolaylaştıracak yollar arıyorum.

Bu arada ‘expression’ olayı çok iyi düşünülmüş.


      array('allow',

                'actions' => array('index', 'view'),

                'users' => array('*'),

                'expression'=>'$user->id=='.$_GET['id'],

            ),



Sizin gibi yii konusunda tecrübeli arkadaşlarda ufakta olsa paylaşımlar yapabilirse çok faydalı olacaktır.

Teşekkürler…

Ek olarak şu konu hakkındada bilgi verebilir misiniz?


 public function filters()

    {

        return array(

            'postOnly + edit, create',

            array(

                'application.filters.PerformanceFilter - edit, create',

                'unit'=>'second',

            ),

        );

    }

Controller içindeki bu filters tam olarak nedir? ne işe yarar?