Avatar billede riversen Nybegynder
18. juni 2008 - 18:32 Der 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?

Blev det forståeligt?
Avatar billede riversen Nybegynder
18. juni 2008 - 18:34 #1
For at gøre det mere konkret:

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.
Avatar billede arne_v Ekspert
18. juni 2008 - 18:53 #2
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 !
Avatar billede riversen Nybegynder
18. juni 2008 - 19:45 #3
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
Avatar billede arne_v Ekspert
19. juni 2008 - 01:56 #4
User instanser:

Riversen
Arne

Role instanser:

Administrator
IndrapportørA

Ressource instanser:

RegnskabButik1
RegnskabButik2
RegnskabButik3
RegnskabButik4
RegnskabButik5

RessourceType instanser:

simpel:

butiksregnskab

extended:

butiksregnskab for [1, 2, 3]

NB: Ressource er nok et interface og ikke en klasse. Klassen ButiksRegnskab implementerer
så Ressource.

user Riversen har Administrator rolle
user Arne har IndrapporttørA rolle

rollen Administrator har ressource type butiksregnskab
rollen IndrapporttørA har ressource type butiksregnskab for [1, 2, 3]

RessourceType knytter Role og Ressource sammen - måske skulle RessourceType hedde
RessourceAccess !
Avatar billede riversen Nybegynder
20. juli 2008 - 10:37 #5
point?
Avatar billede arne_v Ekspert
20. juli 2008 - 15:25 #6
jeps
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester