Diskuze: Routování a autorizace
Člen
Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Spravíš to jednoducho. Vytvor si presenter, ktorý bude predkom ostatných presenterov. Ten v metode startup() skontroluje, či je user prihlásený. Pokiaľ áno, nestane sa nič, no v opačnom prípade ho presmeruje na nejaký SignPresenter, ktorý nebude dediť z toho predka, alebo ho len jednoduchou podmienkou vyfiltruješ v startup() metóde.
Případně pokud budeš mít více stránek obsluhované jedním presenterem, a jen pro některé z nich bude potřeba přihlášení, jednoduše můžeš použít např. metodu action<View>, kde nepřihlášeného uživatele přesměruješ.
Tam je bohužel problém, že ta autorizace bude složitější než pouhé přihlášený / odhlášený. Celý web bude přístupný pouze po přihlášení, každý uživatel bude mít funkce, které mu umožní přístup a různé možnosti úprav (přidávání, mazání, apod.).
Všechny stránky vyžadují přihlášení. Viz můj předchozí příspěvek.
Takže celý obsah má být přístupný pouze přihlášenému userovi ?
Já to řeším podobně jak to napsal Martin Konečný (pavelco1998).
Mám BasePresenter, od něho dědím všechny Presentery. V BasePresenteru
vytvoříš metodu "startup", ve které si zjistíš jestli je user
přihlášený.
Pokud ne přesměruješ ho na SignPresenter, pokud ano neuděláš nic.
Plus ještě bych zjistil název aktuálního presenteru. Když je user
přihlášený a aktuální presenter === 'Sign' tak ho přesměřuješ třeba
na hlavní stranu (HomepagePresenter). Pokud je odhlášený a aktuální
presenter === 'Sign' tak nepřeměřovávat nikam.
Routování záleží na konkrétním webu, ale myslím že z dokumentace na nette.org by jsi mohl pochopit zákládní princip rout a určitě na to přijdeš
Hodil jsem špatný odkaz na uživatele, měl jsem označit Juraj Mlich , omlouvám se
Sakra, nečekal jsem, že moje jméno bude tak dobrý, že bude přitahovat označení
K tématu - pokud je potřeba přihlášení pro všechny stránky, pak to
řeším taky jedním předkem Presenterem, v aktuálním mini-projektu mám ale
třeba:
User/edit (jen pro adminy)
User/profile (pro všechny, i nepřihlášené)
User/settings (jen pro přihlášeného uživatele)
Tak tam to musím řešit jednotlivými metodami.
edit: blbej double post možná by se mohla udělat nějaká kontrola, že pokud se stejný příspěvek odešle v intervalu třeba 10s, tak to ten druhý neuloží.
Celý web má být dostupný pouze přihlášeným uživatelům, ale ne každý přihlášený uživatel mlže vidět všechno. Proto potřebuji mít uložené pravomoci uživatelských rolí v databázi a nevím, jak mám zkombinovat pravomoci u obyčejných presenterů (většina stránek má vlastní presenter, protože dělají něco víc, než jen zobrazují text) a u presenteru PagePresenter. A to routování s tím souvisí tak, že potebuji, aby celý web měl nice URL a opět nevím, jak to zkombinovat u obyčejných presenterů a PagePresenteru.
EDIT: Double post.
Souhlasím s Martin Konečný (pavelco1998)
blbej double post možná by se mohla udělat nějaká kontrola, že pokud se stejný příspěvek odešle v intervalu třeba 10s, tak to ten druhý neuloží.
Já bych hlavně potřeboval pomoct s tím, jak pravomoci ukládat do databáze. Viz. můj předchozí příspěvek.
Celý web má být dostupný pouze přihlášeným uživatelům, ale ne každý přihlášený uživatel mlže vidět všechno. Proto potřebuji mít uložené pravomoci uživatelských rolí v databázi a nevím, jak mám zkombinovat pravomoci u obyčejných presenterů (většina stránek má vlastní presenter, protože dělají něco víc, než jen zobrazují text) a u presenteru PagePresenter. A to routování s tím souvisí tak, že potebuji, aby celý web měl nice URL a opět nevím, jak to zkombinovat u obyčejných presenterů a PagePresenteru.
Dnes vyjde tutoriál kde se tato problematika řeší, tak se na něj pak podívej
Bohužel to není to, co potřebuji. Trochu mi to pomohlo, ale já teď řeším, jak v databázi propojit "stránku" s oprávněními. Kdyby každá stránka měla svůj vlastní presenter, bylo by to snadné, ale bohužel to je tak, jak jsem psal víš. Většina stránek vlastní presenter má, ale pak je presenter PagePresenter, který pouze zobrazuje text, ale může ho používat více stránek.
No ale pořád to je to více temlatů jednoho presenteru...
Máš namysli to, že k některým teplatům PagePresenteru nemůžou mít
určití uživatelé přístup ?
Tak v zjišťuj aktuální presenter i template a přes záznamy v databázi
kontroluj, jestli má určitý uživatel přístup k tomuto tempate ...
Pokud jsi myslel ještě něco jiného, tak ti nerozumím
On PagePresenter má template default, která pouze zobrazí text z databáze. Ale o to nejde. Jde o to, že v databázi musím mát uložené oprávnění k jednotlivých stránkách a musí být jedno jestli stránka používá PagePresenter (pouze vypíše text z databáze) a nebo jiný presenter. Další věc, která musí být v databázi je text, který se na stránkách, které používají PagePresenter, zobrazí. A poslední věc je nice url - ta by měla být uložena u všech presenterů.
Příklad:
Ke stránce úkoly mají přístup uživatelská role Student - může číst,
redaktor - může přidávat. Stránka používá HomeworkPresenter a nice url
je /ukoly. Stránka má dynamický obsah, ale také zobrazuje text z
databáze.
Ke stránce Funkce mají přístup všichni uživatelé. Administrátor - může upravovat. Stránka používá PagePresenter a nice url je /funkce. Stránka zobrazuje text z databáze.
EDIT: a já potřebuji pomoc s návrhem databázové tabulky/tabulek a s routováním.
Ahoj, myslím, že Tvůj problém chápu. Tohle se standardně v Nette řeší pomocí dynamického ACL, který právě vytahuje oprávnění jednotlivých uživatelů k jednotlivým stránkám z databáze.
Ty ale nejdříve potřebuješ, jak sám píšeš, vyřešit návrh databáze. Musíš to hold brát trochu postupně, protože routování se zase řeší, když už přesně víš, jak budou vypadat presentery.
Moje doporučení tedy zní, nejdříve si dej kompletně do kupy návrh databáze. To ale neřeš tady, nýbrž na http://www.itnetwork.cz/…ite-databaze. Až to budeš mít, tak ho sem pošli a můžeme se pobavit o tom, jak to navázat na Nette. A až pak přesně navrhneš a nejlépe i napíšeš presentery, můžeš je sem zase poslat a pobavíme se o tom, jak k nim vytvořit router s hezkými URL.
Jen poznámka, pokud už jsi začal vývoj s tím, že jsi začal návrh od presenterů a teď na ně chceš namapovat vše ostatní, tak Tě čekají těžké časy...
Zobrazeno 17 zpráv z 17.