Brugere og bruggrupper, bedste løsning

Tags:    code-igniter php

Hejsa.

Jeg arbejder nu videre på mit system som skal kunne styre mange forskellige moduler.
Men da ikke alle brugere skal have adgang til alle moduler så ville jeg høre hvordan jeg bedst muligt klare dette?
Jeg bygger systemet op på Codeigniter.

Jeg havde i tankerne blot at styre det ved at fjerne modulerne fra menuen. Men det bliver jo et problem hvis brugeren ikke længere skal have adgang til dette modul og har det lagt i et bogmærke.

Så skal have lavet noget i min database der gør det muligt at lave nogle conditions der kan bestemme om de har adgang til det givne modul.

NB moduler = områder (fx regninger, kontakter, koder, etc).





8 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 17 karma
Sorter efter stemmer Sorter efter dato
Det er næsten rigtigt. Du kan have en masse brugergrupper, men behøver ikke, og disse behøver ikke nødvendigvis en masse forskellige resourcer.

Antag følgende:
Fold kodeboks ind/udKode 


herefter vil følgende gælde:

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 24.06.2013 09:47 af Bruger #10216
Du kommer rigtig langt med et Access Control Layer (ACL).

Om et af nedestående links dækker det, skal jeg ikke kunne sige:
http://ellislab.com/forums/viewthread/213845/
http://www.tastybytes.net/blog/simple-acl-class-for-codeigniter

Ellers kan du benytte nedestående link, hvor du finder et indlæg med en simpel udgave, jeg skrev på et tidspunkt:
http://www.udvikleren.dk/forum/35849/if-admin-show/



Indlæg senest redigeret d. 23.06.2013 21:37 af Bruger #10216
Der stod jeg sku alligevel af.

Forstår slet ikke hvordan det hænger sammen :(



Ser man bort fra brugerne, består et ACL grundlæggende af tre ting: grupper, resourcer og actions.

- Grupper: er dine brugergrupper.
- Resourcer: er det emne en gruppe har adgang til.
- Actions: er hvad en brugergruppe må gøre med et emne.

Resourcer/emner er f.eks. en dør, den kan man med to forskellige actions, åbne og lukke. At gøre dette kræver at man er med i den rigtige gruppe - har det rigtige nøglekort, om man vil.
Det er hvad et Access Control Layer er, og kan gøre.

Brugere knytter du så sammen med en gruppe, og derpå har du informationen om hvilke rettigheder en bruger har.

For at relatere det til dit setup, og for checke adgangen til et specifikt modul kan du f.eks. skrive:

Fold kodeboks ind/udKode 


eller

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 24.06.2013 00:11 af Bruger #10216
Så hvis jeg forstår det ret.
Så skal jeg have en hulens masse brugergrupper med hver deres resourcer som så igen har nogle actions disse kan foretage?



Hmmm.

Det gjorde mig lidt klogere at se lidt små film om dette ACL på youtube.

Men problemet er blot at jeg har rigtig svært ved at forstå hvordan jeg implementere det i mit CI projekt.
Jeg har skrevet et mindre authentication script selv ud fra en tutorial.


Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udPHP kode 


Jeg er helt lost på hvordan jeg skal tilføje dette ACL, som et eller andet sted giver en lille mening i mit hoved



ACL er ikke så svært, når først konceptet er på plads. :)

Implementering kan ske der hvor det giver mest mening - se hvor det giver mest mening at checke om en bruger har adgang. F.eks:

Fold kodeboks ind/udKode 


Ovenstående benytter så en implementation af:

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 26.06.2013 16:52 af Bruger #10216
Jeg kigger nærmere på det når jeg en gang kommer hjem fra ferie.
Jeg synes det begynder at give mere og mere mening



t