Custom Authenticator nelze načíst
- Arthedian
- Člen | 26
Dobrý den,
Snažím se připojit svůj vlastní authenticator, ale bohužel mi to nejde.
Objekt je v app/MyAuthenticator.php
<?php
use Nette\Security as NS;
class MyAuthenticator implements NS\IAuthenticator
{
public $database;
function __construct(Nette\Database\Connection $database)
{
$this->database = $database;
}
function authenticate(array $credentials)
{
list($username, $password) = $credentials;
$row = $this->database->table('users')
->where('username', $username)->fetch();
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, ['username' => $row->username]);
}
}
a config je:
services:
router: App\RouterFactory::createRouter
authenticator: app\MyAuthenticator
Kde dělám chybu? Bohužel v oficiálním návodu není kam správně bych
to měl dát.
Hlásí to
chybu: Class app\MyAuthenticator used in service 'authenticator'
- Arthedian
- Člen | 26
Šaman napsal(a):
Nejsou namespaces case sensitive? Tedy jestli by nepomohlo
App\MyAuthenticator
.
(Teď z hlavy nevím, velikost písmen už pár let ctím, i když to není nutné.)
Toto jsem již bohužel zkoušel a nepomohlo to.
Tyraxor napsal(a):
Ahoj,
problém asi nebude tak v umístění souboru, jako spíš to že ti tam chybí deklarace namespace.
Co je tím myšleno? v authenticatoru use
mám.
Editoval Arthedian (24. 1. 2018 15:07)
- Tyraxor
- Člen | 31
před use by jsi měl definovat svůj namespace, např: namespace App; viz ukázka:
namespace App;
use Nette\Security as NS;
class MyAuthenticator implements NS\IAuthenticator
{
public $database;
function __construct(Nette\Database\Connection $database)
{
$this->database = $database;
}
function authenticate(array $credentials)
{
....
}
}