Chyba v Authenticatoru: contains abstract method
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jarek159
- Člen | 23
Zdravím,
při pokusu o přihlášení dostanu následující chybu:
Class App\Users contains 1 abstract method and must therefore be declared
abstract or implement the remaining methods
(Nette\Security\IAuthenticator::authenticate)
Zkoušel jsem hledat, bohužel neúspěšně.
<?php
namespace App;
use Nette;
use Nette\Security as NS;
use Kdyby\Doctrine\EntityManager;
class User extends Nette\Object implements NS\IAuthenticator
{
private $EntityManager;
public function __construct(EntityManager $EntityManager)
{
$this->EntityManager = $EntityManager;
}
function authenticate(array $credentials)
{
list($username, $password) = $credentials;
$qb = $this->EntityManager->createQueryBuilder();
$qb->select('u')
->from('App\Users', 'u')
->where("u.username = ?1")
->setParameter(1, $username)
->setMaxResults(1);
$query = $qb->getQuery();
$row = $query->getOneOrNullResult();
if (!$row) {
throw new NS\AuthenticationException('User not found.');
}
if (!NS\Passwords::verify($password, $row->password)) {
throw new NS\AuthenticationException('Invalid password.');
}
return new NS\Identity($row->id, $row->role, array('username' => $row->username));
}
}
Editoval Jarek159 (17. 8. 2015 15:24)