Nastavení uživatelů aby viděli jen určitý obsah
- Webster.K
- Člen | 212
Zdravím všechny, zase řeším jeden problém a to přihlášení uživatelů. To funguje naprosto v pořádku, nicméně mě napadlo trochu rozvinout to, co každý z uživatelů vidí. Udělal jsem si pro uživatele skupiny a řeším, jak každému uživateli co se přihlásí na webových stránkách zobrazit jiný obsah (host/admin atd) Funguje mi to tak, že v presenterech ve všech funkcích render mám $user a ověřuji skupinu, nejde to ale udělat nějak globálně pro všechny presentery? Abych to nemusel mít na třeba 30ti místech?
- ali
- Člen | 342
Hod to do metody startup.
Pro inspiraci, ja to resim v BasePresenteru nejak takto:
protected function startup()
{
parent::startup();
switch ($this->getName()) {
case "Module:Home":
// allow home page for all
break;
case "Module:Ticket":
case "Module:Export":
if (!$this->user->isAllowed("module", "view")) {
$this->error(NULL, 403);
}
break;
case "Module:Types":
case "Module:Reasons":
case "Module:DepartmentCodes":
if (!$this->user->isAllowed("module", "admin")) {
$this->error(NULL, 403);
}
break;
default:
$this->error(NULL, 404);
break;
}
}
- Jan Mikeš
- Člen | 771
Šablona vytářená defaultní templatefactory má v sobě již obsažené
některé proměnné (např $user
, $baseUri
,
$flashes
, atd..) doporučuji se kouknout přímo na její kód, ten
ti napoví, které proměnné jsou defaultně dostupné, aby sis je
nepřepsal: https://api.nette.org/…ory.php.html#89
- Webster.K
- Člen | 212
Tak se prokousávám dál a narazil jsem na další dvě věci, které s tímto souvisí a zároveň jsem nenašel řešení :/ Již mi fungují role, jejich dědění a další věci (povolený obsah). Nicméně co mi nejde, nebo netuším jak:
- aby když role „registrovaný“ dědí od „host“ aby nějaký obsah viděl jen a pouze host? Vidí mi to totiž každá další role co od hosta dědí.
- Jde nějak udělat že každý uživatel (když je ve stejné skupině jako ostatní uživatele) viděl jen obsah pro sebe? Dejme tomu že mám roli registrovaný a každému uživateli chci přiřadit jen pro dnešní den něco, aby viděl jen a pouze on a další den uvidí zase něco jinýho, jak toho docílit?
- ViPEr*CZ*
- Člen | 818
Jan Mikeš napsal(a):
Šablona vytářená defaultní templatefactory má v sobě již obsažené některé proměnné (např
$user
,$baseUri
,$flashes
, atd..) doporučuji se kouknout přímo na její kód, ten ti napoví, které proměnné jsou defaultně dostupné, aby sis je nepřepsal: https://api.nette.org/…ory.php.html#89
Jo jo nedávno se mi povedlo udělat si třeba persistentní parametr v Presenteru a jmenoval se name. A pak se spolehni v šabloně na to, aby se dívala na name daného control :-) No stane se.