Cannot redeclare class MyAuthenticator
- Spectrik
- Člen | 23
Ahoj,
zkouším si podle návodu z dokumentace napsat ten vlastní autentifikátor. Třídu jsem pojmenoval MyAuthenticator, uložil do stejnojmenného souboru do Nette/Security.
Pak ho nahrávám v konfiguráku:
services:
- App\Model\UserManager
- App\RouterFactory
router: @App\RouterFactory::createRouter
authenticator: Nette\Security\MyAuthenticator
soubor MyAuthenticator.php
<?php
use Nette\Security as NS;
class MyAuthenticator 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('users')
->where('username', $username)->fetch();
if (!$row) {
throw new NS\AuthenticationException('User not found.');
}
if ($row->password !== md5($password)) {
throw new NS\AuthenticationException('Invalid password.');
}
return new NS\Identity($row->id, $row->role);
}
}
no a furt mi to hází chybu Cannot redeclare class MyAuthenticator. Dle selského rozumu mě to říka, že tu třídu někde přepisuji, ale já teda opravdu nevím kde.
Děkuji za jakoukoliv pomoc
- David Matějka
- Moderator | 6445
uložil do stejnojmenného souboru do Nette/Security.
jako do slozky s nette? pryc s tim! :) dej si to do app
pak koukam, ze mas v neonu
authenticator: Nette\Security\MyAuthenticator
ale trida se jmenuje jen MyAuthenticator
nemas tu tridu nekde definovanou 2x? neinkludujes rucne nejaky soubor?
- Spectrik
- Člen | 23
Tak jsem to přesunul do app, přepsal konfigurák a teď to píše toto:
Service 'user': Multiple services of type Nette\Security\IAuthenticator found: 22_App_Model_UserManager, authenticator
...\vendor\nette\nette\Nette\DI\Compiler.php:140 source Nette\DI\ContainerBuilder-> generateClasses (arguments)
...\vendor\nette\nette\Nette\DI\Compiler.php:92 source Nette\DI\Compiler-> generateCode (arguments)
...\vendor\nette\nette\Nette\common\Configurator.php:217 source Nette\DI\Compiler-> compile (arguments)
...\vendor\nette\nette\Nette\common\Configurator.php:167 source Nette\Configurator-> buildContainer (arguments)
...\app\bootstrap.php:19 source Nette\Configurator-> createContainer ()
9:
10: $configurator->setTempDirectory(__DIR__ . '/../temp');
11:
12: $configurator->createRobotLoader()
13: ->addDirectory(__DIR__)
14: ->addDirectory(__DIR__ . '/../vendor/others')
15: ->register();
16:
17: $configurator->addConfig(__DIR__ . '/config/config.neon');
18:
19: $container = $configurator->createContainer();
20:
21: return $container;
22:
...\www\index.php:6 source require (arguments)
- David Matějka
- Moderator | 6445
user manager ze sandboxu totiz implementuje authenticator.
Pokud ten user manager nepotrebujes, odeber ho ze sluzeb