Pokud vytváříte jakoukoli webovou aplikaci, která zahrnuje vytváření, čtení, aktualizaci a mazání informací jakéhokoli druhu, bude velmi běžné, že oprávnění k provádění těchto různých operací s daty budou muset být sdíleny mezi vašimi uživateli podle jejich různých rolí. a oprávnění k vaší aplikaci.
Vezměte si například aplikaci pro řízení školy. Uživatelé takové aplikace obvykle spadají do kategorií:studenti, učitelé, vedoucí kateder (HOD) a tak dále. Vaše aplikace NESMÍ umožňovat studentovi mít oprávnění přidávat nebo aktualizovat své výsledky semestrálních zkoušek. To by byla funkce Učitele. A když má být do osnov přidán nový kurz nebo předmět, je úkolem pouze vedoucího katedry přidat tento kurz do systému.
V takovém systému můžeme jako různé role označovat Student, Učitel, HOD (vedoucí katedry). v naší aplikaci. Pokud jde o akce, jako je přidávání a aktualizace výsledků studentů, přidávání nových kurzů, budeme je označovat jako oprávnění.
Z dosavadního vysvětlení lze již odvodit, že Uživatel bude mít jednu Roli a role bude mít více Oprávnění. Například John (uživatel) bude mít jednu roli (student) a několik oprávnění (registrovat kurz, zobrazit známky, vytisknout přepis atd.).
To znamená, že v naší databázi MySQL budeme vyžadovat 3 hlavní databázové tabulky:uživatelé, role a oprávnění. Jsme povinni mít vztah Many-To-One mezi tabulkami databáze uživatelů a rolí (jedna role patří mnoha uživatelům) a vztah Many-To-Many mezi tabulkami rolí a oprávnění (Mnoho rolí lze přiřadit mnoho oprávnění) .
Je jen na vás, jakým způsobem budete tyto role popisovat. V našem příkladu jsme k reprezentaci rolí používali Student, Učitel, HOD, protože příklad se týkal aplikace pro správu školy. Pokud jste pracovali na aplikaci pro správu hotelu, role mohou být něco jako Manažer, Uklízečka, Recepční a podobně.
V tomto tutoriálu vytváříme systém správy uživatelských účtů pro blogovou aplikaci. Proto budeme tyto role označovat jako Autor, Editor a Správce. Samozřejmě je můžete změnit, jak chcete, ale tyto tři jsou téměř standardem pro systémy pro správu obsahu.
Bude implementován úplný systém registrace a přihlášení administrátora/uživatele. Všichni uživatelé se přihlásí pomocí stejného přihlašovacího formuláře a po přihlášení budou mít přístup k administračnímu panelu pouze administrativní uživatelé (autoři, redaktoři, administrátoři), zatímco normální uživatelé budou přesměrováni na veřejnou domovskou stránku.
V naší databázi vytvoříme tabulku databáze příspěvků, abychom měli na čem testovat naše oprávnění. Například uživatel s rolí Editor bude moci upravovat, aktualizovat, publikovat, zrušit publikování a mazat všechny příspěvky, zatímco Autor bude mít oprávnění vytvářet, číst, aktualizovat a mazat pouze ty příspěvky, které byly vytvořili sami. Administrátor bude mít oprávnění vytvářet, aktualizovat, mazat další administrativní uživatele a role a také přidělovat/rušit přidělování oprávnění k rolím a rolím uživatelům.
POZNÁMKA:Již jsem vytvořil návod na vytvoření kompletní blogové aplikace od začátku. Zakládání, mazání a aktualizace příspěvků zde tedy vlastně implementovat nebudeme. Jen si ukážeme, jak tato oprávnění fungují kolem příspěvků. Pokud se chcete naučit, jak vytvořit blog pomocí příspěvků, podívejte se na můj další návod, jak vytvořit blog v PHP.
Struktura adresáře projektu.
Vytvořte složku projektu s názvem user-accounts a poté v ní vytvořte tři další složky:admin, include, assets, z nichž každá má následující podsložky:
admin:Tato složka obsahuje zdrojový kód pro administrátorskou část aplikace. V této složce vytvořte další tři složky, jmenovitě příspěvky, role, uživatelé.
aktiva:Toto bude obsahovat veřejné soubory, ke kterým bude mít prohlížeč přístup, jako jsou obrázky, css, js. Takže uvnitř aktiv vytvořte obrázky, složky css a js.
zahrnuje:Toto bude obsahovat záplaty zdrojového kódu pro naši aplikaci, které můžeme zahrnout na různá místa v naší aplikaci. V této složce vytvořte další dvě složky:layouts a logic.
V tomto okamžiku je struktura našeho projektu vše nastavena. Nyní můžeme začít kódovat systém. Uděláme to v další části tohoto tutoriálu.
Děkuji za pozornost a doufám, že se uvidíme u dalšího dílu.