18. juni 2008 - 18:32Der er
5 kommentarer og 1 løsning
Objektorienteret design
Hej,
er ved at lave et system i PHP, hvor der skal kunne gives forskellige rettigheder til brugerne.
Jeg har bl.a. en klasse, der repræsenterer en bruger, en klasse, der repræsenterer en gruppe (fx administrator, gæst, sælger etc). En bruger kan være medlem af flere grupper.
Dette har egentlig været fint hidtil med henblik på at sige, en bruger i administratorgruppen må tilgå alt, en i sælger må tilgå side x, en i gæst må tilgå side y etc.
Nu er der behov for endnu 2 grupper, hvilket egentlig ikke er noget problem. Medlemsskab af hver af disse 2 grupper, giver adgang til at redigere nogle data for x antal butikker. Der skal altså også angives, hvilke butikker man har disse rettigheder i. Hvordan løses dette pænt?
En gruppe "indrapportør", som giver adgang til at indrapportere regnskabstal En gruppe "butikadmin", som giver adgang til at redigere diverse data for butik
en indrapportør kan så få lov til at indrapportere for butik 1, 2 og 3 en butikadmin (evt. samme bruger) kan få lov at ændre data for butik 1, 4 og 5.
User 0..* ---- 0..* Role 0..* ---- 0..* RessourceType 1 ---- 0..* Ressource
(man bruger ofte rolle fremfor gruppe i denne sammenhaeng)
Hvis der er forholdsvis faa kombinationer af butikker ville jeg lave en rolle for hver mulig kombination.
Hvis der er en trilliard mulige kombinationer, saa er der brug for et andet approach. Saa er det noedvendigt kun at have roller for de faktiske kombinationer.
Min foerste ide er:
abstract Role class med en abstract checkAccess(ressource) method 2 konkrete sub classes SimpleRole og ExtendedRold ExtendedRole indeholder en liste over tilladte ressource id'er SimpleRole checkAccess checker kun om rollen har access til ressource typen ExtendedRole checkAccess checker om rollen har access til ressource typen og om id er i positiv listen
Jeg ved ikke om den ide vil virke, men jeg mener at den er vaerd at prototype !
ved ikke om jeg er helt med på, hvordan du vil bruge ressourcetype og ressource. Kan du eksemplificere lidt mere ud fra en bruger, der er administrator og en der er indrapportør
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.