Aktualizace dat v identitě

MPep
Člen | 7
+
0
-

Zdravím,

Mám problém s uložením dat do identity v presenetu.

$this->user->identity->data['CAT_EMAIL2'] = $catEmail;
Debugger::barDump($this->user->identity->data['CAT_EMAIL2']);

Druhý řádek poté hlásí chybu **Undefined index: CAT_EMAIL2
**

Nette verze 3.0

Objekt user získávám v konstruktoru takto:

public function __construct(
    Nette\Security\User $user,
    ReelsUserManager $reelsUserManager
)
	{
    parent::__construct();
    $this->user = $user;
    $this->reelsUserManager = $reelsUserManager;
	}

$this->user->identity->data je řádek z databáze, array

Nevíte někdo co dělám špatně? Děkuji.

CZechBoY
Člen | 3608
+
0
-

Pošli jak vytváříš tu identitu.

MPep
Člen | 7
+
0
-

Myslím že tento postup se mnou táhne z prvního projektu v nette:

1. V configu vytvořím službu a vní fci authenticate:

services:
	- App\Model\ReelsUserManager
	public function authenticate(array $credentials): Nette\Security\IIdentity
	{
		..
		..
		//$row je objekt Dibi\Row
		return new Nette\Security\Identity($row['ID_USER'], 0, (array) $row);
}

2. injectnu si user do presenteru který se stará o přihlášení:

	final class SignPresenter extends BasePresenter
	{
		/** @var Nette\Security\User @inject */
		private $user;

		public function __construct(Nette\Security\User $user)
		{
			$this->user = $user;
		}

3. V SignPresenter s přihlašovacím formulářem a v něm fce formSucces:

	$this->user->login($values->username, $values->password);

A to je myslím vše, netuším kde si user pamatuje údaje (session, cache?), jestli se správně vytvoří ani jak je možné že se zasvolá App\Model\ReelsUserManager::authenticate který implementuje Nette\Security\IAuthenticator

To jsou věci s kterými v nette vždy bojuji a když si myslím že jsem pochopil ukáže se že je to jinak.

MPep
Člen | 7
+
0
-

Zdravím,

Tak jediné funkční řešení které jsem nalezl je vytvořit komplet novou identitu.

$this->user->login(new Nette\Security\Identity($data['ID_USER'], 0, (array) $data));