nedaří se rzoběhnout authenticator
- ike
- Člen | 14
Zdravím,
mám aplikaci, která běží pod Nette 2.0.12.
Chtěl jsem upgradovat na 2.3.3. Natáhl jsem sandbox a postupně do něj
přidávat kódy z 2.0.12. A narazil jsem při použití Authenticatoru
(zřejmě nechápu správně namespace). Mám pocit, že jsem už pročetl celé
fórum a nejsem moudřejší ani za mák.
config.neon:
<?php
services:
- App\Model\UserManager
- App\Model\Authenticator
- App\Forms\SignFormFactory
router: App\RouterFactory::createRouter
authorizator: AccessList
?>
Authenticator.php
<?php
namespace App\Model;
use Nette,
Nette\Security;
/**
* Users authenticator.
*/
class Authenticator extends Nette\Object implements Security\IAuthenticator
{
/** @var Nette\Database\Context */
private $database;
public function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
/**
* Performs an authentication.
* @return Nette\Security\Identity
* @throws Nette\Security\AuthenticationException
*/
public function authenticate(array $credentials)
{
list($username, $password) = $credentials;
$row = $this->database->table('users')->where('username', $username)->fetch();
if (!$row) {
throw new Security\AuthenticationException('The username is incorrect.', self::IDENTITY_NOT_FOUND);
} elseif (!Security\Passwords::verify($password, $row->password)) {
throw new Security\AuthenticationException('The password is incorrect.', self::INVALID_CREDENTIAL);
}
$arr = $row->toArray();
unset($arr['password']);
return new Security\Identity($row->id, NULL, $arr);
}
}
?>
Výsledná hláška je
Service ‚application.10‘: Class App\Presenters\Authenticator does
not exist
Víte někdo co dělám špatně? Předem díky za radu.
- Šaman
- Člen | 2666
Můžeš ukázat celou aplikaci? Nebo to zkus to na čistém sandboxu a
jestli to zreprodukuješ, tak nasdílet ten. Myslím, že chyba bude jinde, než
co jsi posílal. Možná si ještě zkus fulltextem vyhledat
Authenticator
, jestli tam někde nemáš nějakou zapomenutou
deklaraci. a rozhodně promaž cache a temp, aby tam nebyla data z minulé
aplikace na nižším Nette.
- ike
- Člen | 14
Díky vám oběma za pomoc, chybu jsem našel.
Byla v authenticatoru:
před
<?php
class Authenticator extends Nette\Object implements Security\IAuthenticator
?>
po
<?php
class Authenticator extends \Nette\Object implements Security\IAuthenticator
?>
Zrada byla v lomítku před Nette, aplikace hledala Object v App\Model\Nette\Object.
Ještě jednou díky za pomocnou ruku.