Změna dat v identitě uživatele

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

Zdravím,
v databázi mám u uživatele sloupec blocked, tedy jestli je blokovaný. Když se uživatel přihlásí a z jiného účtu ho někdo zablokuje, tak potřebuji, aby se to promítlo do jeho identity.

Zkoušel jsem to nastavit takto, kde pole $data obsahuje změněné pole:

$this->getUser()->getIdentity()->data = $data;

ale hlásí mi to chybu: Cannot write to a read-only property Nette\Security\Identity::$data.

Můžete mi prosím poradit, jak změnit data v identitě?

Díky

Filip Procházka
Moderator | 4668
+
0
-

Musíš je tam vložit už při vytvoření. Třetí argument

matoni555
Člen | 40
+
0
-

Já je tam mám, jen mi to nejde později změnit dle mého kódu výše.

hAssassin
Člen | 293
+
0
-

@matoni555 > ano to nejde, protoze Identity nema pro $data setter, cili to takle napsat nemuzes. Muzes ale pridat vsechny dalsi veci do dat pres magickou __set ale primo k $data se nedostanes:

$this->user->identity->data = $data; // spatne, nejde, lze jen v konstruktoru Identity

// Takhle lze
$hits->user->identity->value1 = $value1;
$hits->user->identity->value2 = $value2;
$hits->user->identity->value3 = $value3;
...

// Nebo treba takhle (taky by to melo fungovat)
$data = array("value1" => 1, "value2" => 2, "value3" => 3, ...);
foreach($data as $key => $value) {
	$hits->user->identity->$key = $value;
}
matoni555
Člen | 40
+
0
-

Super, takhle to funguje. Díky!