Nefunkční ověření role v šabloně

Taps
Člen | 168
+
0
-

Zdravím, přes databázi mám vytvořeno přihlašování uživatelů do aplikace. Každý uživatel má ve sloupci db nastaveno právo
1 = admin
2 = uzivatel

V šabloně jsem chtěl zobrazit zvlášt odkazy pro admina a zvlášt pro uživatele. Zkusil jsem tedy aplikovat metodu isInrole, ale v podmínce mi to nefunguje.

zkusil jsem tedy kontrolní výpis promměnnýchh

{var_dump($user->getRoles())} vrací array(1) { [0]=> int(1) }
{var_dump($user->isInRole('1'))} vrací bool(false)

Mohl by mi prosím někdo poradit kde by mohl být problém a proč se mi pro ověřování vrací false? Děkuji

Editoval Taps (24. 8. 2023 14:48)

NouF
Člen | 67
+
0
-

Ahoj, neznám celou tvou app, možná není nejšťastnější způsob používat čísla pro role.

Já si vytvořím konstantu ROLE_ADMIN = ‚admin‘, ROLE_USER = ‚user‘, ROLE_GUEST = ‚guest‘ a v latte využívám konstanty (abych si nemusel dohledévat, jestli je 1 admin nebo uživatel)

Ale dle dat co si poslal, to působí, že getRoles existuje tvá role, ale je to jako INT (číslo), ale v isInRole(‚1‘) to pošleš jako string ‚1‘, tak proto to nezafunguje. Zkus tohle $user->isInRole(1) jestli to hodí true.

dakur
Člen | 493
+
0
-

@Taps Předáváš role z db do identity? Koukni sem na druhý parametr volání SimpleIdentity.

Taps
Člen | 168
+
0
-

@dakur: ano, a role se korektne zobrazi i v tracy, jakmile se uzivatel prihlasi

dakur
Člen | 493
+
+1
-

A to co psal NouF jsi zkoušel? $user->isInRole(1) místo $user->isInRole('1'). Tím by to dost mohlo být..

Marek Bartoš
Nette Blogger | 1275
+
0
-

isInRole() přijímá jen string. Řešení je vkládat do rolí uživatele pouze stringy.