Ogólnie sytuacja wygląda tak. Utworzyłem kontroler, który ma akcję logowanie, ładuje model uzytkownik, który ma akcje zaloguj, akcja ta laduje model tozsamosc, który jest rozszerzeniem ‘yii\web\IdentityInterface’, gdzie wyszukuje uzytkownika, porownuje haslo i w przpadku znalezienia delikwenta wykonuje logowania Yii::$app->user->login($this,3600)
I tyle mniejwięcej wystarczało w Yii 1.1. Chwilowo bez kodu, czysto do rozważenia. Czy czegoś gdzieś po drodze nie dodałem ? Nie skonfigurowałem ?
Zalogować się mogę do pierwszego odświeżenia strony - dziwne dla mnie trochę i powoli iytujące. Acz - może ktoś rzuci hasłem za czym mam się dokładniej rozejrzeć.
Controller
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\Uzytkownik;
class StronaController extends Controller {
public function actionIndex(){
return $this->render('index');
}
public function actionAbout(){
return $this->render('index');
}
public function actionLogowanie(){
$uzytkownik = new Uzytkownik;
if ( Yii::$app->request->post('Uzytkownik') ){
$uzytkownik->attributes = Yii::$app->request->post('Uzytkownik');
if ( $uzytkownik->zaloguj() ){
echo 'użytkownik znaleziony i haslo jest OK.';
} else {
echo 'bledne dane logowanie lub cos innego nie tak';
}
}
return $this->render('logowanie', [
'model' => $uzytkownik,
]);
}
public function actionWyloguj(){
//Uzytkownik::wyloguj();
//$this->redirect('/');
}
}
?>
Uzytkownik - model
<?php
namespace app\models;
//use yii\base\Model;
use Yii;
use yii\db\ActiveRecord;
class Uzytkownik extends ActiveRecord
{
public $nazwa;
public $haslo;
private $tozsamosc = null;
public function attributeLabels(){
return [
'nazwa' => 'Login',
'haslo' => 'Haslo',
];
}
public function rules()
{
return [
// username and password are both required
[['nazwa', 'haslo'], 'required', 'message' => 'Pole {attribute} nie może być puste.'],
];
}
public static function tableName(){
return 'uzytkownicy';
}
public function zaloguj(){
$osoba = $this->findByCondition([
'nazwa' => $this->nazwa,
'haslo' => md5($this->haslo),
], true);
//$this->tozsamosc = new Tozsamosc($osoba);
$this->tozsamosc = new Tozsamosc([
'nazwa' => $this->nazwa,
'haslo' => md5($this->haslo),
]);
if ( $this->validate() AND $osoba){
$this->tozsamosc->zaloguj();
} else {
// jeszcze nie wiem co else
}
return $osoba;
}
public static function wyloguj(){
}
}
Tozsamowsc - model
<?php
namespace app\models;
use yii\web\IdentityInterface;
use yii\base\Model;
use yii;
class Tozsamosc extends Model implements IdentityInterface{
public $nazwa;
public $haslo;
public $id;
public $authkey;
public function zaloguj(){
Yii::$app->user->login($this,3600);
}
public static function findIdentity($id) {
return Uzytkownik::findByCondition([
'id' => $id
]);
}
public static function findIdentityByAccessToken($token, $type = null) {
return static::findOne(['access_token' => $token]);
}
public function getId() {
return $this->id;
}
public function getAuthKey() {
return $this->authKey;
}
public function validateAuthKey($authKey) {
return $this->authKey === $authKey;
}
}
?>