Vlastní authenticator – připojení
- Bou
- Člen | 3
Zdravím,
pokouším se vytvořit vlastní authenticator a připojit jej k aplikaci, nicméně laděnka vrací chybu
Class App\Auth\Authenticator used in service 'authenticator' not found or is not instantiable.
Přčemž můj authenticator je v adresáři App\auth\authenticator.php.
Kód authenticatoru:
Jedná se o authenticator uvedený v Domumentace:Přihlašování &
oprávnění uživatelů.
<?php
namespace App\Auth;
use Nette\Security as NS;
class Authenticator extends Nette\Object implements NS\IAuthenticator
{
public $database;
function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
function authenticate(array $credentials)
{
list($username, $password) = $credentials;
$row = $this->database->table('user')
->where('login', $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);
}
}
?>
Sekce services v souboru config.neon.
services:
authenticator:
App\Auth\Authenticator\Authenticator
Díky za každou pomoc.
Editoval Bou (25. 10. 2014 10:58)
- BigCharlie
- Člen | 283
Nemáš tam náhodou překlep? Nemá to být takhle?
services:
authenticator:
App\Auth\Authenticator
- Bou
- Člen | 3
// Po smazání souborů v adresáři temp vypadá, že robotloader třídu načte. Nyní se ale trápím s chybou
Service 'authenticator': Service of type Nette\Database\Context needed by App\Auth\Authenticator::__construct() not found. Did you register it in configuration file?
Editoval Bou (25. 10. 2014 15:29)
- James_Scott
- Člen | 55
Authenticator vyžaduje v konstruktoru instanci NTB, kterou mu musíš v configu nastavit – viz dokumentace
- David Kudera
- Člen | 455
Od toho je autowiring, který předání zařídí sám. Navíc kdyby to byla chyba v tomto, tak chybová hláška by byla jiná