iki db , farklı kullanıcı girişleri

İki tane vtım var biri ayarların tutulduğu kullanıcı giriş kayıtlarının yapıldığı. Diğeri ise o kullanıcıların yaptığı işlemleri tutuyor.

Şimdi admin olarak girecek olan ilk vt ye bağlanıcak. İşlem yapıcaksa diğer vtye geçip kullanıcı giriş yapmalı.

Admin olarak girdiği yerde sessiona veriyi alıcam admin mi değilmi kontrolleri yapabilmek için.

Admin olarak girdiği yerdeki session ile user olarak girilen yerdeki sessionlarda

if (!Yii::app()->user->isGuest) <- koşulu güvenli olur mu ?

Admin olarak girdi , adres çubuğundan diğer vtye bağlı geçmiş hareketlerin olduğu url adrese girerse session isGuest değildir. Giriş serbest olmaz mı yada ne olur bilen var mı?

isGuest ile sadece login olup olmadigini kontrol edebilirsin. Controller de access rules lari setup yaparken asagidaki gibi yaparsan admin nin kullanicinin ve login olmamis kullanicinin giris izinlerini belirlemis olursun




public function accessRules()

	{

		return array(

			array('allow',  // allow all users to perform 'index' and 'view' actions

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

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

			),

			array('allow', // allow authenticated user to perform 'create' and 'update' actions

				'actions'=>array('create','update'),

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

			),

			array('allow', // allow admin user to perform 'admin' and 'delete' actions

				'actions'=>array('admin','delete'),

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

			),

			array('deny',  // deny all users

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

			),

		);

	}



Peki giriş yapanının admin yada user olduğunu useridentityden nasıl belirtebilirim ?

  1. vt ye giriş ekranı admin.

  2. vt ye giriş ekranı user.

İkiside UserIdentity ile girdiğini düşünürsek. Sessiona mı belirtmeliyim admin girdi yada user girdi diye.

Bir cok sekilde admin kullaniciyi belirleyebilirsin. Eger username "admin" olmasi kafi ise asagidaki gibi session tanimlamana gerek kalmaz




public function authenticate()

	{

		$users=array(

			// username => password

			'demo'=>'demo',

			'admin'=>'admin',

		);

		if(!isset($users[$this->username]))

			$this->errorCode=self::ERROR_USERNAME_INVALID;

		else if($users[$this->username]!==$this->password)

			$this->errorCode=self::ERROR_PASSWORD_INVALID;

		else{

			$this->errorCode=self::ERROR_NONE;

		}

		return !$this->errorCode;

	}



Birden fazla admin varsa dedigin gibi session kullanip accessRules da




array('allow', // allow admin user to perform 'admin' and 'delete' actions

				'actions'=>array('admin'),

				'users'=>(Yii::app()->user->getState('roletype')=='admin')?array(Yii::app()->user->getName()):array(''),

			),



veya ‘users’ yerine experessions kullanabilirsin

umutau çok teşekkür ederim session ile giren kişiye göre değer vererek yaptım. Bu tür yol gösteren olduğunda insanın daha da öğrenesi geliyor :)