Ako vlozit premennu do AuthoryzatorFactory

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

Ahojte.

Prosim vas, mam toto:

class AuthorizatorFactory
{

	/** @var Model\BundlesManager */
	private $bundlesManager;

	public function __construct(Model\BundlesManager $bundlesManager)
	{
		$this->bundlesManager = $bundlesManager;
	}

	/**
     * @return Nette\Security\Permission
     */
    public static function create()
    {

		$bundles = $this->bundlesManager->getBundles();

        $acl = new Permission;

		$acl->addRole('guest');
		$acl->addRole('admin', 'guest');
        $acl->addRole('superadmin');

		$acl->addResource('Res1');
		$acl->addResource('Res2');

		// ...

        /** HomePage */
        $acl->allow('admin', 'Homepage');

		/** SUPERADMINISTRATOR moze vsetko !! */
		$acl->allow('superadmin', $acl::ALL, $acl::ALL);

        return $acl;
    }
}

No troskota to tu:

$bundles = $this->bundlesManager->getBundles();

koli tomu this.

Problem vznika tym, ze ide o staticku metodu.

Cize otazka: Ako dostanem tie premenne do statickej metody
Alternativna otazka: Ako ten authenticator rozbeham, ak z toho spravim nestaticku metodu.

Dakujem za kazdu radu.

Editoval vladimir.biro (24. 11. 2017 23:59)

CZechBoY
Člen | 3608
+
0
-

Uděláš z něj normál službu a přistoupíš přes klasickou instanční metodu.
Nevim jestli to používáš v konfiguráku, ale jestli jo tak třeba takhle

services:
	- App\AuthorizatorFactory
	authorizator: @App\AuthorizatorFactory::create
vladimir.biro
Člen | 163
+
0
-

CZechBoY napsal(a):

Uděláš z něj normál službu a přistoupíš přes klasickou instanční metodu.
Nevim jestli to používáš v konfiguráku, ale jestli jo tak třeba takhle

services:
	- App\AuthorizatorFactory
	authorizator: @App\AuthorizatorFactory::create

Super, teraz mi to uz ide aj bez statickej metody :)

Tak a teraz … dalo by sa toto authorizator: @App\AuthorizatorFactory::create pozut napriklad v BasePresenteri?
Potrebujem mat v tej chvili uz ponastavovane nejake settery.

vladimir.biro
Člen | 163
+
0
-

Aha … uplne normalne cez DI … no kto by to bol povedal :D

CZechBoY
Člen | 3608
+
0
-

Settery? Jestli to je zas něco od uživatele tak už by asi stálo za to vytáhnout to někam ven do služby…

vladimir.biro
Člen | 163
+
0
-

CZechBoY napsal(a):

Settery? Jestli to je zas něco od uživatele tak už by asi stálo za to vytáhnout to někam ven do služby…

Na zaklade prihlaseneho uzivatela sa urcuje ktoremu projektu pratri a podla toho sa nastavuje aj authorizator.
A ten projekt sa nastavuje v BasePresenteri v startup() { … }