Nette 2.0 vlastni trida User a Authenticator

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

Ahoj,

snazim se nastavit vlastni User a Authenticator v configuraci – neon. Pro ini mi to funguvalo:

Nette\Web\IUser: User
Nette\Security\IAuthenticator: User
Nette\Security\IAuthorizator: Acl

Pro neon jsem podle dokumentace zkusil napsat:

authenticator:
	class: User
	arguments: [@database]
IUser:
	class: User

Editoval neznalek (18. 7. 2011 10:18)

VaKvas
Začátečník | 111
+
0
-
services:
		authenticator:
			class: \MyAuth

		authorizator:
			class: \Acl
neznalek
Člen | 60
+
0
-

a IUser se jeste pouziva? Nikde jsem nanasel vysvetleni jak presne funguje pole arguments.

VaKvas
Začátečník | 111
+
0
-

Tady je to popsane celkem dobre.

neznalek
Člen | 60
+
0
-

Presne tuto dokumentaci jsem myslel a bohuzel mi to zni nefunguje..

VaKvas
Začátečník | 111
+
0
-

A co nefunguje ?

neznalek
Člen | 60
+
0
-

Uz se mi podarilo nacist moji tridu User:

class User extends Nette\Http\User { ... }

Ale hlasi mu to tuto chybu:
Argument 1 passed to Nette\Http\User::__construct() must implement interface Nette\DI\IContainer, none given, called in /var/www/bitcoin/libs/nette/Utils/LimitedScope.php(49) : eval()'d code on line 5 and defined search

Na radku:

if (!$this->user->isLoggedIn()) {...}

Editoval neznalek (18. 7. 2011 13:33)

Aurielle
Člen | 1281
+
0
-

Musíš to obcházet hackem (funguje v nejnovější dev verzi Nette):

user:
	class: MyNamespace\User
	arguments: [@container]

nebo si udělat továrničku, té se pak DI container předává automaticky.

neznalek
Člen | 60
+
0
-

Mas nejaky priklad na tu tovarnicku?

smasty
Člen | 90
+
0
-
<?php
namespace MyNamespace;

class User {
	...
	static function create(Container $container){
		return new static($container);
	}
}
?>
# config.neon
services:
	user:
		factory: MyNamespace\User::create