Cannot redeclare class MyAuthenticator

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Spectrik
Člen | 23
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

user manager ze sandboxu totiz implementuje authenticator.

Pokud ten user manager nepotrebujes, odeber ho ze sluzeb

Spectrik
Člen | 23
+
0
-

Děkuji Vám nastotisíckrát :D už to šlape

Editoval Spectrik (17. 4. 2014 19:24)