Kullanıcı Login, Yetkilendirme Vb ( Authentication - Authorization )

yii de Authentication - Authorization kullanan oldu mu ?

Bir projemde kullanıcı yetkilendirme ile beraber kullanmam lazım.

kıt İngilizcemle biraz okuyabiliyorum ama bazı yerleri çıkaramıyorum.

http://www.yiiframework.com/doc/guide/1.1/en/topics.auth

bunun hakkında Türkçe bir döküman ya da yazı yazan var mı ?

Authentication ve authorization ilk baslayanlar icin genelde sıkıntılı…

ben bu sıkıntıyı nasıl astıgımı anlatayım umarım işine yarar.

  • oncelikle user ve rights modullerine indirip unzip et. sonrada onları asagıdaki klasorlerin içine at.

    /webapp/protected/modules/user

    /webapp/protected/modules/rights

  • Sonra /webapp/protected/modules/user/data/schema.mysql.sql yolunu takip ederek oradaki mysql semasını yii icin kullandıgın veritabanının icine import et.Bu tablo temel işlevlerin tanımlı oldugu ornek bir veri tabanıdır.bu adımda yii nin kucuk bir hatası var onu duzeltmen gerekecek "lastvisit" yazan satırı bul ve onu "lastvisit_at" yap.

  • Yii ye modulleri ekledin ama hala yii nın bu yeniliklerden haberiyok o yuzden config.php icine gir ve asagıdaki satıra yani import alanına gerekli satırları gir.


'import'=>array(

        ...

        'application.modules.user.models.*',

        'application.modules.user.components.*',

        'application.modules.rights.*',

        'application.modules.rights.components.*',

        ...

),

  • aynı dosya ıcınde yanı config de asagıdaki alanı bul ve ornekteki gibi degistir

'modules'=>array(

        ...

        'user'=>array(

                'tableUsers' => 'tbl_users',

                'tableProfiles' => 'tbl_profiles',

                'tableProfileFields' => 'tbl_profiles_fields',

        ),

        'rights'=>array(

                'install'=>true,

        ),

        ...

),

  • şimdi en onemli ama genelde ben dahil herkesin untup debelendigi alan

localhost/rights linkini takip ederek (localhost senin localdeki site adresin) gelen uyarıyı kabul edip rights modulu kurman.

Bu işlemden sonra bir onceki adımda


'rights'=>array(

                'install'=>true,

satırını geri donup ‘install’=>false yapman gerekiyor.

-Eğer suana kadar herseyi duzgun yaptıysan admin/admin veya demo/demo kkullanıcı adı sifreleriyle login olabilmen lazım.

Yapamadıysan basa don tekrar gel aynı adımları.

tabi bu login ve kullanıcı adları ile sistemi kullanmak çile o yuzden rwebuser sınıfını degiştirip kendi login scriptini yazmanda fayda var.

ekbilgi 1…

Bana sadece rights modulu yeterli gelmiyor bazen controllerın cagırdıgı sayfa gelmeden once bu sınıfı kullanarak yaptıgım yetki kontrolunu sayfa ıcerisinde ajax call lardan oncede yenilemek istiyorum o durumlarda controllerdan tekrar ayar yapmak yerine static bir sınıf belirleyerek işe baslıyorum Ornek CakmaUserRights isimli bir sınıf olusturuyorum bu sınıfın icine 1 2 fonksiyon yazıp bu fonksiyonlarla o an aktif olan kukllanıcnın idsinden veritabanında yetki sorgulaması yaptırıyorum. bu kısmı forumda bir yerde anlatmıs olmam lazım turkce olarak işine yaraması ümidiyle…

ekbilgi 2… asagıdaki degisiklikleri bir sitede gormustum bende uyguladım bu sayede standart linklerin hepsini degistirebildim sanada tavsiye ederim. bunuda config dosyanda yapacaksın.


'items'=>array(

        ...

        /* array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest), */

        /* array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest), */

        array('label'=>'Rights', 'url'=>array('/rights'), 'visible'=>!Yii::app()->user->isGuest),

        array('url'=>Yii::app()->getModule('user')->loginUrl, 'label'=>Yii::app()->getModule('user')->t("Login"), 'visible'=>Yii::app()->user->isGuest),

        array('url'=>Yii::app()->getModule('user')->registrationUrl, 'label'=>Yii::app()->getModule('user')->t("Register"), 'visible'=>Yii::app()->user->isGuest),

        array('url'=>Yii::app()->getModule('user')->profileUrl, 'label'=>Yii::app()->getModule('user')->t("Profile"), 'visible'=>!Yii::app()->user->isGuest),

        array('url'=>Yii::app()->getModule('user')->logoutUrl, 'label'=>Yii::app()->getModule('user')->t("Logout").' ('.Yii::app()->user->name.')', 'visible'=>!Yii::app()->user->isGuest),

        ...

),