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

Diskuze: MCV a rovnaká url, ale iné zobrazenie pre užívateľa, admina, ...

Aktivity
Avatar
Matúš Petrofčík:5.5.2014 2:16

Dobré ránko kolegovia.
Vopred poprosím, aby mi neodpovedali ľudia čo sa tomu nevyznajú, alebo si nie sú istí svojou odpoveďou. Za všetky odpovede aj otázky na spresnenie ďakujem. :)

Ide o jeden projekt (v budúcnosti viac s podobnou fičúrou), ktorý nechcem robiť cez žiadne frameworky alebo pripravené CMS. Chcem si to napísať sám, a hlavne kvalitne. Opieram sa o tunajšie tutoriály, devbook ukážkové MCV cmsko, a o svoju vynaliezavosť. Pri navrhovaní všetkého možného som sa dostal k menšiemu problému, s ktorým by som sa rád poradil:

Potrebujem, aby sa stránka zobrazovala všetkým typom užívateľov (neprihláseným, prihláseným, redaktorom, adminom) pod rovnakou URL, ale s menšími zmenami. Tj.: každý by mal podľa typu užívateľa obmedzené/pridané funkcie a zobrazenie stránky. Nechcem to riešiť spôsobom, že sa ľudia budú prihlasovať cez nejaké administračné rozhranie.

Zaujímam sa teda o nejaké riešenie návrhu tried, kontrolerov, ako týchto užívateľov rozlíšiť a pritom toto rozlíšenie riešiť čo najelegantnejšou cestou. Nechcem riešiť zisťovanie práv uživateľa v každej triede samostatne.

Ak máte nejaké nápady, otázky, návrhove vzory (alebo ich kombinácie), ... ďakujem ak prispejete :)

matusko

Odpovědět
5.5.2014 2:16
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík:5.5.2014 23:38

to mi nikto nevie pomôcť? alebo som snáď zadal zle otázku? :/

Nahoru Odpovědět
5.5.2014 23:38
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Matúš Petrofčík
Michal Štěpánek:6.5.2014 10:47

A jak chceš u nepřihlášených uživatelů řešit jejich oprávnění??? To je přece postavené na hlavu. Když nebudu přihlášen, jsem tedy anonym a žádný program mi nemůže nabídnout jiná oprávnění než jinému anonymovi, protože nás nezná...
Musí být nějaká databáze uživatelů, databáze rolí a uživatelé musí být přiřazování do rolí. Podle toho pak různým uživatelům můžeš zobrazit to, co mají vidět, resp. co má vidět ta role...

Editováno 6.5.2014 10:50
Nahoru Odpovědět
6.5.2014 10:47
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Matúš Petrofčík:6.5.2014 11:31

Databázu mi tu riešiť netreba.

Zoberiem si ako príklad devbook:
A: anonym - môže prezerať články a komentáre
B: člen - môže to isté čo anonym + pridávať komentáre, hodnotiť články, 1++, posielať správy
C: moderátor - môže to isté čo člen + zamykať forum, mazat komentáre,
atď...

A ja chcem vedieť, ako to v OOP PHP vyriešiť. Či to mám riešiť v každej triede znovu a znovu, alebo pre každého užívateľa vlastnú triedu, alebo ako? Aby riešenie bolo čo najprehľadnejšie, najelegantnejšie a najľahšie na úpravu.

Nahoru Odpovědět
6.5.2014 11:31
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Matúš Petrofčík
Jan Vargovský:6.5.2014 11:55

Koukni na nějaký finální projekt, kde se řeší přihlášený/ nepřihlášený - tam snad najdeš odpověď.

V podstatě si uděláš kompletní view a u jednotlivých věcí se ptáš, jestli se mají vyrenderovat nebo ne.

Editováno 6.5.2014 11:57
 
Nahoru Odpovědět
6.5.2014 11:55
Avatar
Odpovídá na Matúš Petrofčík
Michal Štěpánek:6.5.2014 12:48

Samozřejmě, že to nemusí být rovnou v databázi, ale bez přihlášení to nelze...
i na Devbook se musíš přihlásit, abys mohl požívat výhody "člena"...

Nahoru Odpovědět
6.5.2014 12:48
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Jan Vargovský
Matúš Petrofčík:6.5.2014 12:58

ja by to rád kontroloval na jednom mieste a hlavne aby mi nevznikal chaos :) nejaký tip na ten projekt z ktorého by som mohol odkukať? pokial nikto nevie lepšie riešenie, tak si na začiatku skontrolujem aký užívateľ chce zobraziť stránku a podľa toho mu pošlem napr.: AnonymKategori­eKontroler alebo Administrator­KategorieKontro­ler, a aby som si ich udržal s rovnakými metodami tak budu dediť od nejakého spoločného abstraktného UzivatelKontroleru (to bol príklad)

Michal Štěpánek : ee uchádza ti zmysel toho čo chcem

Nahoru Odpovědět
6.5.2014 12:58
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Matúš Petrofčík
Neaktivní uživatel:6.5.2014 13:09

Já bych si napsal kontrolery pro každý případ - jak jsi psal teď.

Nahoru Odpovědět
6.5.2014 13:09
Neaktivní uživatelský účet
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jan Vargovský:6.5.2014 14:00

Zbytečně moc redundantní.

http://stackoverflow.com/a/11668462
 
Nahoru Odpovědět
6.5.2014 14:00
Avatar
Odpovídá na Jan Vargovský
Matúš Petrofčík:6.5.2014 14:26

z wikipedie, trochu offtopic k slovu "redundantní":

  1. Redundance jako zbytečnost, plýtvání slovy a prostředky. Redundantní je příslovečné „páté kolo u vozu“.
  2. V jazyce, v komunikaci, v informatice i v technice je však redundance důležitá jako prostředek ke zvyšování spolehlivosti a odolnosti proti chybám.
Nahoru Odpovědět
6.5.2014 14:26
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Matúš Petrofčík
Jan Vargovský:6.5.2014 15:24

V programování = kód, který je na více místech a v podstatě se neliší. Ani tvoje HTML se lišit nebude, jen někdo tam bude mít navíc tlačítko a někdo zase ne, takže ti stačí jeden view a budeš ho tam dávat na základě toho pro koho se ten view generuje.

 
Nahoru Odpovědět
6.5.2014 15:24
Avatar
Odpovídá na Jan Vargovský
Neaktivní uživatel:6.5.2014 17:20

Pokud tam bude mít administrátor nějaké ovládací prvky a výpisy z db navíc, tak je zbytečné je volat i pro nepřihlášeného a pak je nevypsat, ne :)?

Nahoru Odpovědět
6.5.2014 17:20
Neaktivní uživatelský účet
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jan Vargovský:6.5.2014 17:27

Oni se volat nebudou, copak když máš konstrukci

if(true)
write(smth);
else
write(smth2);

tak se taky nevolají obadva, ale jen ten jeden, tak sámo to funguje i tam. Akorát tam máš teda jednu alternativu navíc.

 
Nahoru Odpovědět
6.5.2014 17:27
Avatar
Odpovídá na Jan Vargovský
Neaktivní uživatel:6.5.2014 18:23

Jooo ... tak tomu nerozumím :D

Nahoru Odpovědět
6.5.2014 18:23
Neaktivní uživatelský účet
Avatar
Odpovídá na Jan Vargovský
Matúš Petrofčík:6.5.2014 19:19

to mám teda všade v každej triede ifovať? lenže ja budem mať 5 rôznych oprávnení a takto mi to moc nevyhovuje :/

Nahoru Odpovědět
6.5.2014 19:19
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Matúš Petrofčík
Jan Vargovský:6.5.2014 19:34

Podle vašeho bys to dělal 5x celé, takhle tam akorát uděláš pár podmínek :D

Se kdyžtak poptej někde, kde se na ASP zaměřují.

 
Nahoru Odpovědět
6.5.2014 19:34
Avatar
Odpovídá na Jan Vargovský
Matúš Petrofčík:6.5.2014 20:10

php chlape! :D ešte je to k tomu v php sekcii fóra :D

Nahoru Odpovědět
6.5.2014 20:10
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Matúš Petrofčík
Jan Vargovský:6.5.2014 20:24

Fuu, to jsem si nevšiml :D tak to neber nic co jsem napsal neplatí :` omlouvám se 8|

 
Nahoru Odpovědět
6.5.2014 20:24
Avatar
Odpovídá na Jan Vargovský
Matúš Petrofčík:6.5.2014 20:26

a s PHP mi nepomôžeš? ;( :D

Nahoru Odpovědět
6.5.2014 20:26
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Matúš Petrofčík
Petr Nymsa:6.5.2014 20:38

Já bych to asi řešil následovně

  1. (Model) Správce uživatelů kde bych měl aktuálně přihlášeného uživatele a ENUM (nějaký flag) jeho práv
  2. V Controleru si pak vytáhnu jaký má práva
  3. Ve View akorát podmínky jestli splňuje požadavky

-> To je podlě mě nejjednodušší cesta

if($this->user->credentials == "Admin")
 <a href="adminsekce" />
else
 ....
Editováno 6.5.2014 20:39
Nahoru Odpovědět
6.5.2014 20:38
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Neaktivní uživatel:6.5.2014 20:42

Kdyby šlo jen o odkaz tak proč ne, ale kdyby třeba admin měl navíc po straně panel s výpisem nejnovějších komentů na schválení (příklad), tak bych to takhle nedělal(zbytečné dotazy na db a plácání výkonem). Jak bys to udělal v tomhle případě?

Nahoru Odpovědět
6.5.2014 20:42
Neaktivní uživatelský účet
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Petr Nymsa:6.5.2014 20:55

No tak hlavně předpokládám, že když jsem na výpisu článku nebudu tam adminovi cpát ještě nejnovější komentáře. To by měl už v ADMIN sekci.

Když to shrnu na komentáře tka těch podmínek moc nebude. Adminovi zobrazíš pár tlačítek navíc. Ostatní složitější administrace bude někde v Admin sekci. Tipuju že devbook to má stejně :)

Nahoru Odpovědět
6.5.2014 20:55
Pokrok nezastavíš, neusni a jdi s ním vpřed
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 22 zpráv z 22.