Inloggning och behörigheter, sessionsvariabeln access

Date: 2008-11-02 11:52:02 Created: null

All in- och utloggning görs via login.php. Vid inloggning kontrolleras angivet användarnamn och lösenord mot tabellen users i databasen. Finns dessa skapas sessionsvariabeln "access" och fylls med värden ur databasen. "access" är en array med variablerna "level", "userid", "username", "category_access", "accesslevel" och "special" i. De tre sistnämnda är även de arrayer. "category_access" lagrar vad en given behörighet kan göra i olika kategorier och "accesslevel" all övrig information om behörigheten. "special" lagrar slutligen de sidor användaren har särskild behörighet till utöver sin behörighetsnivå. Anledningen till denna någon massiva sessionsvariabel är önskan att undvika en mängd extra databasanrop vid varje funktion som enbart behöriga användare ska ges tillgång till.

Level

Level utgörs av siffran för användarens behörighetsnivå, exempelvis 0 för rotanvändaren.

Userid

Userid är användarens id ur tabellen users.

Username

Användarens användarnamn från users.

Category_access

Innehåller en array för varje rad behörighetsnivån har i tabellen category_access. Dessa "underarrayer" namnges efter kategorin de beskriver (content_id-fältet i tabellen), och värdena i varje array har samma namn som i tabellen i databasen. $access['category_access'][1] är alltså den array som avgör vad behörighetsnivån får göra med dagboksanteckningar (kategori 1).

Accesslevel

Innehåller all data utom description, image och access_level ur tabellen accesslevel för användarens behörighetsnivå. Alla värden i arrayen har samma namn som kolumnerna i tabellen.

Special

En array som innehåller ett värde för varje sida som användaren har speciellt tillstånd att redigera. Varje värde är namngivet efter sidans id-nummer och innehåller ett "yes". Sidorna hämtas från tabellen sar. För att kontrollera om en användare har särskild behörighet för en sida x räcker det alltså med att kontrollera om variabeln $access['special'][x] finns.

Rotspecifika funktioner

Vissa funktioner på webbplatsen kan enbart en användare med rotbehörighet komma åt, exempelvis redigering av sidkategorierna och hantering/skapande av användare och behörighetsnivåer. För dessa funktioner kontrolleras att användarens accesslevel är 0, och därmed går det inte att ge icke-rotanvändare tillträde till funktionerna.