Hallo Leute!
Ich versuche gerade eine Webapp zu schreiben, die mehrere Authentifizierungsmethoden verwendet. Es ist so: Im Frontend sollen sich die Studierenden mit ihrer Matrikelnummer anmelden können (nur mit der Matrikelnummer). Administratoren hingegen sollen sich mit deren Email und einem vorher definierten Passwort anmelden.
Ich dachte mir ich mach einfach zwei verschiedene Klassen die von CUserIdentity abgeleitet sind und überschreibe die "authenticate()" Methode. Ich habe nun versucht AdminIdentity so zu erstellen:
<?php
/**
* UserIdentity represents the data needed to identity a user.
* It contains the authentication method that checks if the provided
* data can identity the user.
*/
class AdminIdentity extends CUserIdentity
{
/**
* Authenticates a user.
* The example implementation makes sure if the username and password
* are both 'demo'.
* In practical applications, this should be changed to authenticate
* against some persistent user identity storage (e.g. database).
* @return boolean whether authentication succeeds.
*/
public function authenticate()
{
$admin = Administrator::model()->find('LOWER(email)=?', array($this->username));
if(!isset($admin))
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if(!$admin->validatePassword($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
$this->errorCode=self::ERROR_NONE;
return !$this->errorCode;
}
}
Wenn ich nun aber im protected/models/LoginForm.php die AdminIdentity instanzieren will bekomm ich immer einen HTTP 500 Error.
// $this->username ist in diesem Fall die Email des Benutzers.
$this->_identity=new AdminIdentity($this->username,$this->password);
Laut Yii Framework sollte das importiert sein, denn in der /config/main.php habe ich den Import von ‘application.components.*’ drinn. Da die Klasse im Ordner ‘components’ ist sollte diese auch automatisch geladen werden.
Zusätzliche Info: Das File indem die Klasse gespeichert ist heisst: ‘AdminIdentity.php’
Kann mir jemand helfen das Problem zu lösen?
Vielen Dank schon im Voraus!