Použití Identity

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

Ahoj, jak si do identity přidávat libovolné položky, jako třeba ID do databáze?

Děkuji Tom

_Martin_
Generous Backer | 679
+
0
-

Třída Identity je potomek třídy Object, takže přes univerzální settery a gettery můžeš nastavit téměř cokoliv:

$identity->id = 1234;
$identity->sex = 'male';
...
tr.
Člen | 79
+
0
-

Děkuji, to je ono

kravčo
Člen | 721
+
0
-

_Martin_ napsal(a):

Třída Identity je potomek třídy Object, takže přes univerzální settery a gettery můžeš nastavit téměř cokoliv:

$identity->id = 1234;
$identity->sex = 'male';
...

Len doplním, že to nie je kvôli dedeniu z Nette\Object, ale vďaka implementovaniu vlastného úložiska dát, totiž Nette\Object (a potomkovia) pri prístupe k nedeklarovanej premennej vyhadzuje výnimku.

_Martin_
Generous Backer | 679
+
0
-

kravco napsal(a):

Len doplním, že to nie je kvôli dedeniu z Nette\Object, ale vďaka implementovaniu vlastného úložiska dát, totiž Nette\Object (a potomkovia) pri prístupe k nedeklarovanej premennej vyhadzuje výnimku.

Pravda, trochu jsem to zmotal s tím, že v Identity můžeš měnit i vlastnost name pomocí $identity->name – a to je díky dědění od Object (že se volá metoda $identity->getName()). Ale ty vlastní vlastnosti se mění díky setterům a getterům přímo té třídy Identity. Takže díky za opravení=)

2bfree
Člen | 248
+
0
-

asi jsem uplne hloupy, ale kdyz se uzivatel prihlasi, tak do Identity ulozim treba Locales uzivatele. Jak si je pak v Presenteru getnu?

zkousel jsem vsechno mozne a uz vazne nevim.

Mohl by nekdo napsat manual pro debila, jak spravne nasetovat promennou a pak jak ji v prezenteru getnout?

diky moc vsem

Ondřej Mirtes
Člen | 1536
+
0
-
$identity = Environment::getUser()->getIdentity();

BTW: Nová identita jde zakládat taky pomocí asociativního pole:

return new Identity($name, $role, array(
	'id' => $id,
        'blabla' => $blabla,
));
2bfree
Člen | 248
+
0
-

Diky moc. Ted jeste poprosim, jak ta data ulozena do Identity nacist. Zkousel jsem vsechno mozne a proste ne a ne to nejak nacist.

nAS
Člen | 277
+
0
-

Jak psal LastHunter:

$identity = Environment::getUser()->getIdentity();

Tím dostaneš objekt Identity a na tom je implementován univerzální getter, takže pak stačí psát:

echo $identity->blablba;
Sentinel
Člen | 5
+
0
-

Co se týká identity taky bych se rád zeptal.
může mít uživatel přiřazené dvě role? třeba (blogEditor – role co by umožňovala editovat blog, a galleryEditor co by umožňovala editovat galerii? kdy obě role by měli předka user který by mohl prohlížet obě sekce?

Díky

//možná se na to dívám ze špatnýho úhlu, tak se omlouvam jestli to působí zamotaně.

jasir
Člen | 746
+
0
-

Sentinel napsal(a):

Co se týká identity taky bych se rád zeptal.
může mít uživatel přiřazené dvě role? třeba (blogEditor – role co by umožňovala editovat blog, a galleryEditor co by umožňovala editovat galerii? kdy obě role by měli předka user který by mohl prohlížet obě sekce?

Může…

kuty
Člen | 7
+
0
-

Prosim o radu, snazim se vytvoreni identity a at delam, co delam, ulozi se mi vzdy poze prvni polozka identity – name … Data taham z databaze a mam overeno, ze select je v poradku, proc mi nefunguje nasledujici konstrukce? S nette jsem zacatecnik :-(

return new Identity($row->password, $row->role, array(
                                                          'id' => $row->user_id,
                                                          'realname' => $row->name,
                                                  )); // vratime identitu
---------------------
............
---------------------
echo $identity->name; // vypise
echo $identity->role; // nevypise
echo $identity->user_id; // nevypise

Editoval kuty (25. 11. 2009 18:37)

_Martin_
Generous Backer | 679
+
0
-

kuty napsal(a): …

Ahoj, takže:

  1. proč do položky pro jméno vkládáš heslo???
  2. uživatel může mít více rolí, takže použij $identity->roles (vrací pole).
  3. user_id je položka v řádku z DB, ale do identity ji vkládáš už jen jako id (viz. to pole). Takže použij $identity->id.
kuty
Člen | 7
+
0
-

_Martin_ napsal(a):

kuty napsal(a): …

Ahoj, takže:

  1. proč do položky pro jméno vkládáš heslo???
  2. uživatel může mít více rolí, takže použij $identity->roles (vrací pole).
  3. user_id je položka v řádku z DB, ale do identity ji vkládáš už jen jako id (viz. to pole). Takže použij $identity->id.

To heslo byl jen test, jestli se meni obsah identity :-) Ve vyslednem kodu mam samozrejme name, jinak diky, uplne zustavam stat, jaky hovadiny clovek v roztrzitosti naplaca ;-)