Avatar
blablabla
Člen
Avatar
blablabla:

Ahoj,
potřeboval bych poradit s routováním a návrhem databázové struktury. Většina "stránek" bude mít vlastní presenter, kromě stránek, které pouze vypisují text - ty budou používat PagePresenter. S potřebuji udělat autorizaci skrz všemi presentery. A samozřejmě bych potřeboval, aby všechny "stránky" měli hezké URL.

Nemohl by mi někdo poradit, jak to udělat. Jde mi o myšlenku, ne o kód.

Díky

 
Odpovědět 20.7.2015 10:22
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na blablabla
Juraj Mlich:

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.

Nahoru Odpovědět 20.7.2015 14:53
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Odpovídá na blablabla
Martin Konečný (pavelco1998):

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š.

Editováno 20.7.2015 15:59
 
Nahoru Odpovědět  ±0 20.7.2015 15:58
Avatar
blablabla
Člen
Avatar
Odpovídá na Juraj Mlich
blablabla:

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.).

 
Nahoru Odpovědět 20.7.2015 21:17
Avatar
blablabla
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
blablabla:

Všechny stránky vyžadují přihlášení. Viz můj předchozí příspěvek.

 
Nahoru Odpovědět 20.7.2015 21:18
Avatar
TomasGlawaty
Člen
Avatar
TomasGlawaty:

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 (HomepagePresen­ter). 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š :)

Nahoru Odpovědět 20.7.2015 21:45
Člověk může dosáhnout čeho si zamane. Jen musí chtít, případně něco obětovat ...
Avatar
TomasGlawaty
Člen
Avatar
TomasGlawaty:

Hodil jsem špatný odkaz na uživatele, měl jsem označit Juraj Mlich , omlouvám se :)

Nahoru Odpovědět 20.7.2015 22:18
Člověk může dosáhnout čeho si zamane. Jen musí chtít, případně něco obětovat ...
Avatar
Odpovídá na TomasGlawaty
Martin Konečný (pavelco1998):

Sakra, nečekal jsem, že moje jméno bude tak dobrý, že bude přitahovat označení :p

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.

 
Nahoru Odpovědět 20.7.2015 22:33
Avatar
Odpovídá na TomasGlawaty
Martin Konečný (pavelco1998):

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ží.

Editováno 20.7.2015 22:34
 
Nahoru Odpovědět  +1 20.7.2015 22:33
Avatar
blablabla
Člen
Avatar
Odpovídá na TomasGlawaty
blablabla:

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.

 
Nahoru Odpovědět 21.7.2015 9:50
Avatar
blablabla
Člen
Avatar
Odpovídá na TomasGlawaty
blablabla:

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ží.

Editováno 21.7.2015 9:52
 
Nahoru Odpovědět 21.7.2015 9:50
Avatar
blablabla
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
blablabla:

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.

 
Nahoru Odpovědět 21.7.2015 9:54
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na blablabla
David Čápka:

Dnes vyjde tutoriál kde se tato problematika řeší, tak se na něj pak podívej :)

Nahoru Odpovědět  ±0 21.7.2015 10:49
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
blablabla
Člen
Avatar
Odpovídá na David Čápka
blablabla:

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.

 
Nahoru Odpovědět 23.7.2015 11:43
Avatar
TomasGlawaty
Člen
Avatar
Odpovídá na blablabla
TomasGlawaty:

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 :)

Nahoru Odpovědět 23.7.2015 12:05
Člověk může dosáhnout čeho si zamane. Jen musí chtít, případně něco obětovat ...
Avatar
blablabla
Člen
Avatar
Odpovídá na TomasGlawaty
blablabla:

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.

Editováno 23.7.2015 12:32
 
Nahoru Odpovědět 23.7.2015 12:31
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na blablabla
Jindřich Máca:

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... :-D

Editováno 24.7.2015 17:10
 
Nahoru Odpovědět 24.7.2015 17:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.