Dinamicke role v Identity

duskohu
Člen | 778
+
0
-

Caute snazim sa dinamicky menit role v Identity pri kazdom requeste. problem je v tom ze po kazdom requeste mi v poli roles 3 nasobne zduplikuje pridanu rolu, ako by sa ta sluzba spustala 3×, ale ked mam dump v konstruktore tak sa spusti len raz. Neviete poradit v com bude hacik? Na sluzbe je tag run, aby sa spustala utomaticky. Popripade ako sa spravne dinamicky menia role v Identity pomocou nejakej service.

extension

	public function loadConfiguration() {
		$builder = $this->getContainerBuilder();

		// IdentityProcessor
		$builder->addDefinition($this->prefix('identityProcessor'))
			->setClass(IdentityProcessor::class)
			->addTag('run');
	}

service

namespace Nas\UserModule\DI;

use Arachne\Security\Authentication\FirewallInterface;
use Nette\Security\Identity;

class IdentityProcessor {

	/** @var FirewallInterface */
	private $firewall;

	/**
	 * @param FirewallInterface $firewall
	 */
	public function __construct(FirewallInterface $firewall) {
		$this->firewall = $firewall;
		$testRole = 'testx';

		/** @var Identity $identity */
		$identity = $this->firewall->getIdentity();
		$roles = $identity->getRoles();
		$roles[] = $testRole;

		$identity->setRoles($roles);
	}
}

Editoval duskohu (16. 11. 2017 17:13)