Logowanie tylko o określonej godzinie

Witam,

Zostałem zmuszony do przerobienia istniejącej strony wykonanej w YII i kompletnie nie wiem jak sobie poradzić z weryfikacją czy user może o danej godzinie się zalogować. w gołym PHP wiem jak to zrobić, proste wyciągnięcie z mysql dostępnych godzin dla danego usera is sprawdzenie czy obecna jest = >< ale w YII jest to jakaś magia.

Potrzebuje pomocy, naprowadzania mnie na jakieś rozwiązanie. Chciałbym by dany user mógł się logować o godzinie + - 3 do tej co wpiszę w bazie.

useridentify.php wyglada tak

public function authenticate()

{


	&#036;record=Pracownicy::model()-&gt;findByAttributes(array('Login'=&gt;&#036;this-&gt;username, 'Aktywnosc' =&gt; 1));


    if(&#036;record===null)


        &#036;this-&gt;errorCode=self::ERROR_USERNAME_INVALID;


    else if(&#036;record-&gt;Haslo&#33;==md5(&#036;this-&gt;password))


        &#036;this-&gt;errorCode=self::ERROR_PASSWORD_INVALID;


    else


    {


        &#036;this-&gt;_id=&#036;record-&gt;ID;


       # &#036;this-&gt;setState('title', &#036;record-&gt;title);


        &#036;this-&gt;errorCode=self::ERROR_NONE;


    }


    return &#33;&#036;this-&gt;errorCode;


}

loginform.php wyglada tak:

public function authenticate($attribute,$params)

{


	if(&#33;&#036;this-&gt;hasErrors())


	{


		&#036;this-&gt;_identity=new UserIdentity(&#036;this-&gt;username,&#036;this-&gt;password);


		if(&#33;&#036;this-&gt;_identity-&gt;authenticate())


			&#036;this-&gt;addError('password','Incorrect username or password.');


		else {


			# sprawdzam czy wypozyczalnia do której probuje sie zalogowac 


			# jest podpieta do uzytkownika


			if(PracownicyHasRbWypozyczalnie::model()-&gt;findByAttributes(array('rb_pracownicy_ID'=&gt;&#036;this-&gt;_identity-&gt;getId(), 'rb_wypozyczalnie_ID' =&gt; &#036;this-&gt;wypozyczalnia_id)) === null) {


				&#036;this-&gt;addError('wypozyczalnia_id','Brak uprawnień do wybranej wypożyczalni.');


				&#036;this-&gt;_identity-&gt;errorCode = UserIdentity::ERROR_BLEDNA_WYPOZYCZALNIA;


				


			}


			


			


		}


	}


}

Nie znam Yii1. Najbardziej przyszłościowo było by nie ruszać logowania a dodać upoważnienia na modelu RBAC. Każdy mógłby się zalogować kiedy chce ale mógłby robić coś tam tylko w wybranych godzinach, i różnymi rolami uprawnien.

Na szybkiego możesz dodać do bazy danych atrybut aktywnosc_czas

1.zmienić kontroler


$record=Pracownicy::model()->findByAttributes(array('Login'=>$this->username, 'Aktywnosc' => 1, 'aktywnosc_czas' => datetime));

  1. Dodać walidację aktywnoSC_czas do modelu. To znaczy jakie wartości może przyjmować ta zmienna

  2. Zmienić widok:





public function authenticate($attribute,$params)

{

if(!$this->hasErrors())

{

$this->_identity=new UserIdentity($this->username,$this->password);


	if(!$this->_identity->authenticate())

	$this->addError('password','Incorrect username or password.');

	else {

	# sprawdzam czy wypozyczalnia do której probuje sie zalogowac

	# jest podpieta do uzytkownika

	if(PracownicyHasRbWypozyczalnie::model()->findByAttributes(array('rb_pracownicy_ID'=>$this->_identity->getId(), 'rb_wypozyczalnie_ID' => $this->wypozyczalnia_id,  )) === null) 

	{

		$this->addError('wypozyczalnia_id','Brak uprawnień do wybranej wypożyczalni.');

		$this->_identity->errorCode = UserIdentity::ERROR_BLEDNA_WYPOZYCZALNIA;


	}

	if ($record->aktywnosc_czas >< DATE) {

		$this->addError('aktywnosc_czas','Brak uprawnień o tym czasie.');

		$this->_identity->errorCode = UserIdentity::ERROR_BLEDNA_WYPOZYCZALNIA	// = 1,2,3	;}


	}

}

}

pceuropa dziękuje za pomoc.