Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
blablabla
Člen
Avatar
blablabla:20.7.2015 10:22

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
Tvůrce
Avatar
Odpovídá na blablabla
Juraj Mlich:20.7.2015 14:53

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
Avatar
Odpovídá na blablabla
Martin Konečný (pavelco1998):20.7.2015 15:58

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
20.7.2015 15:58
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
blablabla
Člen
Avatar
Odpovídá na Juraj Mlich
blablabla:20.7.2015 21:17

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:20.7.2015 21:18

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:20.7.2015 21:45

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
Avatar
TomasGlawaty
Člen
Avatar
TomasGlawaty:20.7.2015 22:18

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
Avatar
Odpovídá na TomasGlawaty
Martin Konečný (pavelco1998):20.7.2015 22:33

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
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na TomasGlawaty
Martin Konečný (pavelco1998):20.7.2015 22:33

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
20.7.2015 22:33
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
blablabla
Člen
Avatar
Odpovídá na TomasGlawaty
blablabla:21.7.2015 9:50

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:21.7.2015 9:50

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:21.7.2015 9:54

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 Hartinger
Vlastník
Avatar
Odpovídá na blablabla
David Hartinger:21.7.2015 10:49

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

Nahoru Odpovědět
21.7.2015 10:49
You are the greatest project you will ever work on.
Avatar
blablabla
Člen
Avatar
Odpovídá na David Hartinger
blablabla:23.7.2015 11:43

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:23.7.2015 12:05

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
Avatar
blablabla
Člen
Avatar
Odpovídá na TomasGlawaty
blablabla:23.7.2015 12:31

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
Tvůrce
Avatar
Odpovídá na blablabla
Jindřich Máca:24.7.2015 17:08

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.