Podpora evidence registrovaných uživatelů a jejich zařazení do uživatelských skupin je jedním ze základních pilířů frameworku. Jednotlivým uživatelům či celým skupinám lze totiž následně přiřazovat přístupová oprávnění k různým entitám.
Framework nabízí dva druhy registrace nového uživatele. Prvním je klasická registrace zadáním uživatelského jména a hesla. Druhou možností je vložení uživatelského jména a e-mailové adresy a teprve následné nastavení hesla na základě ověřovacího e-mailu – zaručí se tím kontrola platnosti uživatelem zadané e-mailové adresy. Podobné ověření je pak samozřejmě vyžadováno při každé další změně e-mailu kdykoliv v budoucnu.
Veškeré registrační i osobní údaje se ukládají do databáze. Každý uživatel má interně přiřazen jedinečný celočíselný identifikátor, přes který na něj lze odkazovat i z dalších databázových tabulek. Z toho vyplývá například i možnost kdykoliv si změnit uživatelské jméno bez ohrožení referenční integrity. Heslo je uchováno v podobě šifrované jednocestnou hashovací funkcí MD5, tudíž k jeho původní podobě nemá přístup nikdo, ani administrátor aplikace. Libovolnému uživateli je možné nastavit datum a čas expirace nastaveného hesla, stejně tak jako úplně zakázat přihlášení.
Pro případ zapomenutého hesla je v případě nastavené e-mailové registrace podporována možnost zaslání náhradních přístupových údajů na zadanou e-mailovou adresu uživatele. Nezasílá se heslo, ale náhodný deblokační klíč. Po jeho zadání je uživatel bezprostředně vyzván k nastavení hesla nového.
Pro uchování dodatečných uživatelských informací (osobní údaje, kontakty apod.) je k dispozici speciální databázová tabulka user_info. Alternativní a v mnoha případech i vhodnější a pohodlnější možností uchování údajů pro konkrétního uživatele mezi jednotlivými dotazy i mezi jednotlivými sessions je použití supersession proměnných. Pro podrobnější informace viz kapitolu Supersession proměnné.
Uživatelé mohou být zařazováni do uživatelských skupin. Skupiny si podle vlastního uvážení a potřeby vytváří administrátor aplikace. Jednotlivým uživatelským skupinám pak lze přiřazovat různá přístupová oprávnění v aplikaci. Z pohledu klasifikace [20] uvedené v kapitole Autorizace a přístupová práva jsou uživatelské skupiny v phpBASE pojaty jako role.
Tradičně chápané uživatelské skupiny jsou tvořeny prostým seznamem jejich členů. Narozdíl od tohoto přístupu lze v phpBASE definovat každou skupinu několika různými kritérii. Díky nim jsou možnosti určení jednotlivých členů skupiny široké a značně flexibilní. Jednotlivé podmínky lze mezi sebou navíc navzájem kombinovat. Těmito kritérii jsou:
V klasickém pojetí uživatelských skupin se jedná prakticky o jediné kritérium. Zde je však rozšířeno. Kromě taxativního seznamu přiřazených uživatelů lze skupinu definovat buď pro všechny registrované a přihlášené uživatele, nebo pro všechny neregistrované (resp. nepřihlášené) uživatele, anebo pro úplně všechny uživatele bez ohledu na jakoukoliv autentizaci.
Dalším kritériem je IP adresa, ze které klient přistupuje. Lze zadat buď konkrétní adresu počítače, anebo jen adresu sítě a příslušnou bitovou masku. Takto lze vytvořit například speciální skupinu všech návštěvníků aplikace, kteří přistupují z Vysoké školy ekonomické. Anebo třeba v kombinaci s taxativním výčtem uživatelů omezit určeným administrátorům přístup jen z určených firemních počítačů (resp. jen z těchto počítačů budou mít určení uživatelé speciální adminitrátorská práva).
Poslední možností je určit, že pro to, aby byl aktuální uživatel považován za člena dané skupiny, musí k aplikaci přistupovat přes zabezpečený kanál. Tato podmínka se asi nejčastěji použije pro adminsitrátorské skupiny či pro přístup do citlivých částí serveru. Další možností je vynucení použití SSL během přihlašování uživatele. V takovém případě lze vytvořit speciální skupinu pro všechny uživatele, která bude vyžadovat SSL, a té povolit přístup k logovacímu formuláři. Všem ostatním skupinám se poté přístup k němu zakáže.
Vytvoření nové uživatelské skupiny
Každý uživatel může být samozřejmě i členem více skupin. Systém eviduje pořadí skupin za sebou. Dostanou-li se totiž u jednoho uživatele do kolize přístupová práva definovaná pro jeho různé skupiny, rozhoduje o přednosti určené explicitní pořadí, pozdější skupina má přednost. Tento mechanizmus umožňuje mít více skupin, pro každou definovat jen dílčí oprávnění a pak je navzájem kombinovat. Například skupině všech registrovaných uživatelů zpřístupníme běžné části aplikace. Skupině administrátorů pak už jen nastavíme povolení přístupu do administračních částí. Nicméně administrátoři se dostanou i do běžných částí, protože jsou zároveň ve skupině všech registrovaných uživatelů. Pro podrobný popis vyhodnocování přístupových práv viz kapitolu Přístupová práva.
Obsah stránek vyjadřuje osobní názory, postoje a zkušenosti autora. Copyright © 2004–2010 Jan Tichý.