dotaz ohledně přístupů, jak řešit fronted / admin část

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

Předem se omlouvám za lamovost, ale nevím si rady v tomto:

Většina mých výtvorů (www stránek) naprogramovaná mimo nette se zkládala z toho, že byla část stránek pro všechny dostupná. Bylo tam možnost se i přihlásit (ve veřejné části). Po přihlášení se přidělila role.
bez role – > pouze viditelná část pro všechny

  • role 1 → možnost přístupů na určité části webu + spouštění akcí, editace vlastního nastavení
  • role 2 → něco jako mini admin, možnost vše co role 1 + možnost editovat role 1 (mimo ostatních rolí 2)
  • role 3 → hlavní admin, možnost co role 1+2 a navíc editace role 2.

V Nette jsem si rozchodil acl systém dle návodu. Ale teď řeším jinou věc, pokud bych chtěl mít stejnou strukturu. Tak bych musel převést přihlašování z admin části do front části a pak jen dle toho na co má uživatel právo dodal do menu odkazy na admin části webu. Protože mě přijde zvláštní všem na webu zobrazoat link na přihlášení do admin modulu.

Teď má otázka, pokud bych přesunul přihlašování do front části, musím vše co je v návodu (přihlašování) přehodit na front?
Nebo jak se to má řešit?

Co jsem koukal tak je i možnost https://doc.nette.org/cs/0.9/dynamicka-sprava-roli-a-zdroju ale to jsem si zatím jen přečetl a nešťoural se v tom..

Šaman
Člen | 2659
+
0
-

Jestli je celý front veřejný, tak tam nikoho přihlašovat nemusíš.
V Admin části nech přístupný jen přihlašovací formulář a ostatní schovej za zabezpečený basePresenter.

Pěkný návod je tady

tatyalien
Člen | 239
+
0
-

Tohle právě mám zpracované, ale nelíbí se mě na tom, že je tam link směr admin část. Tam aby to bylo podle mě, tak bych šoupl to přihlašování do front s tím, že pokud by byl uživatel přihlášen a měl práva, tak by se mu zobrazili jen ty skryté linky z admin části.

Šaman
Člen | 2659
+
0
-

Tak pak musíš přihlašování skutečně řešit už ve frontendu a ACL můžeš použít všude, jen počítej s tím, že nepřihlášený uživatel má virtuální roli ‚guest‘. Nebo nechápu přesně otázku.

tatyalien
Člen | 239
+
0
-

Řešil jsem jen, jestli jde nějak jen napojit přihlašování z admin hodit nějak jednoduše do frontedu, nebo to hold celé jen do něj přepsat ;)

Aurielle
Člen | 1281
+
0
-

Pokud tě chápu správně – přihlášení je globální pro celou aplikaci, pokud si nestanovíš jiný namespace. Pokud například chceš, aby se uživatel přihlásil a při oprávnění na vstup do administrace prošel přihlášením znovu (ověřil heslo), tak nastavíš rozdílné namespace a i když bude uživatel ve front části přihlášený, bude se muset přihlásit do admin části. Vše ostatní funguje stejně.

tatyalien
Člen | 239
+
0
-

Oki, díky, nějak to pošolichám ;)

tatyalien
Člen | 239
+
0
-

Tak stejně se zeptmám,
mám už to předělané do front (přihlašování), přihlášení mě funguje, ale když zkouším ručně se dostat na
stránku (nepřihlášen) admin/user/ která se směřuje na admin/preseneter/UserPresenter.php, tak se samozřejmně zapojí kontrola, zda mám na stránky přístup (abstract class Admin_SecuredPresenter extends BasePresenter). Jak mám v tomto presenteru ale nastavit při chybě ať se zobrazí přihlašovací obrazovka z frontu?
Měl jsem zde nastavené:
$this->redirect(‚Auth:login‘, array(‚backlink‘ ⇒ $backlink));
Zde samozřejmně naskočí laděnka, protože Admin_Front_loginPresenter neexistuje.

To Auth:login samozřejmě se směřuje na Admin_Front_loginPresenter (uložené má být AdminModule/presenter/), ale já bych potřeboval na Front_AuthPresenter (ten je uložen v FrontModule/presenter/)

Editoval tatyalien (7. 1. 2011 22:03)

Aurielle
Člen | 1281
+
0
-

:Front:Auth:login

Editoval gmvasek (7. 1. 2011 23:04)

tatyalien
Člen | 239
+
0
-

Díky, to je ono ;)

tatyalien
Člen | 239
+
0
-

A snad na delší dobu poslední dotaz,
vunguje vše jak má, jen při zaplé laděnce se mě zobrazují 2 errory, aplikace funguje, jen takovej ten error dole… oboje obsahují:

PHP Warning: Illegal offset type in isset or empty in …\libs\Nette\Security\Permission.php:92

Zobrazují se od té doby, co jsem si dodal do šablony:

<?Php
Test viditelnosti linků na Admin_PagePresenter<br />
{if isset($user)}
{if $loggedUser->isAllowed(‚Admin_PagePresenter‘, $user->roles)}
Povolený odkaz na <a href=„{plink :Admin:Page:}“>Administrace stránek</a>
{else}
žádný povolený odkaz…
{/if}
{/if}
?>

Jestli to je jen chyba, že uživatel není (isset) tak mě to srdce nedrásá…