Avatar billede mysli Nybegynder
25. juli 2005 - 23:46 Der er 14 kommentarer og
1 løsning

Bygge et rettighedssystem op

Jeg har bygget et site, og skal nu have mulighed for at tilføje rettigheder til nogle brugere.

Har nogle moduler/objecter, og man skal gerne kunne få adgang og blive nægtet adgang til disse, uafhængigt af hinanden.

Nogen der har nogle foreslag til hvordan dette kan gøres?

Jeg kunne selvfølgelig give alle objekterne et unikt nummer, og ssætte det ind i databasen med en form for seperator, men det vil jo gives et fandends stort udtræk.

Andre idéer?
Avatar billede kdjweb Nybegynder
25. juli 2005 - 23:55 #1
du kan give brugere rang, f.eks. admin = 1, bruger = 2.

så når du skal lave rettigheder siger du bare

if($rang == 1){

  echo "Du er en admin";

} else

if($rang == 2){

  echo "Du er en bruger";

} else {

  echo "Hvad er du for en?";

}
Avatar billede mothail Nybegynder
25. juli 2005 - 23:58 #2
Opdel dine mulig i system kritik...
0 User.
1 Redaktør.
2 Mini admin.
3 Admin.
4 Super admin.

og så som kdjweb skriver, så bare med
if($rang >= 1){....
Avatar billede kdjweb Nybegynder
26. juli 2005 - 00:04 #3
if($rang >= 1){

  echo "din rang er højere end 1";

}

:-P
Avatar billede mysli Nybegynder
26. juli 2005 - 00:04 #4
Tak for jeres forslag, men de er desværre for trivielle.

Hvis jeg har >50 objekter, som skal kunne ændres rettigheder til, uafhængigt af hinanden, vil det kræve alt for meget.

Med 50 forskellige objekter vil der jo være flere tusinde mulige kombinationer.
Avatar billede kdjweb Nybegynder
26. juli 2005 - 00:08 #5
heh har du nok ret i :-P hmm må tænke over det
Avatar billede mothail Nybegynder
26. juli 2005 - 00:09 #6
Så skal du give dem ID'er....
til det antal vil jeg nok mene du skal bruge AAA, AAB, AAC.. etc...
Så laver du en liste per bruger hvor den er komma separeret..
så er det jo bare at tjekke om ID stringen er indeholdt i brugerens tilladelser...
Avatar billede mysli Nybegynder
26. juli 2005 - 00:16 #7
Dit forslag beskriver jeg også i mit indlæg mothail. Det vil bare kræve et stort udtræk.

Har også det problem, at en "side" også kan sættes redigheder på, og brugere kan selv oprette sider, hvis de har rettiheder til det:)

Det er som beskrevet, et ret stort omfang.
Avatar billede mothail Nybegynder
26. juli 2005 - 00:21 #8
Mysli > Kunne være du skulle prøve at hente PHPFusion... de kører nemlig med en sådan rettigheds givning...
Kan måske lure nogle triks der ;)
Avatar billede kdjweb Nybegynder
26. juli 2005 - 00:27 #9
hmm, jeg tror jeg hopper af tråden. jeg kan ikke tænke længere på det her tidspunkt :-P Godnat :-)
Avatar billede mysli Nybegynder
26. juli 2005 - 00:28 #10
Jeg prøver at se på det, mange tak.
Avatar billede mysli Nybegynder
26. juli 2005 - 00:36 #11
Ser ud til de har brugt metoden med at lave en seperator.

Jeg giver det lige nogle dage i hovedet:) Lader spørgsmålet stå åbent hvis nogen får gode idéer:)
Avatar billede mothail Nybegynder
26. juli 2005 - 00:44 #12
Ja, der kommer nok nogle mere kloge hoveder imorgen når de vågner ;)
Held og lykke med det ;)
Avatar billede Slettet bruger
27. juli 2005 - 19:19 #13
Jeg ville nok gøre det med lidt ekstra rettighedstabeller i stil med:

Tabel: rettigheder
id
objekt_id
type (enum med mulighederne "bruger", "gruppe")
bruger_gruppe_id
rettighed

Tabel: gruppemedlem
gruppe_id
bruger_id

Tabel: grupper (Denne er bare for at gøre det lettere at styre grupperne)
id
gruppenavn

For så at finde en brugers rettigheder til et objekt, skal man bruge en query i stil med:

(
  SELECT rettighed FROM rettigheder
  WHERE type='bruger'
    AND bruger_gruppe_id=$brugerid
    AND objekt_id=$objektid
)
UNION
(
  SELECT rettighed FROM rettigheder
  LEFT JOIN gruppemedlem ON bruger_gruppe_id=gruppe_id
  WHERE type='gruppe'
    AND bruger_id=$brugerid
    AND objekt_id=$objektid
)

Så er det bare at løbe resultaterne igennem indtil man har fundet et, der giver lov eller der ikke er flere resultater.

Og ja, det kan godt give en hulens masse rækker i tabellerne, hvis der er mange brugere.
Avatar billede mysli Nybegynder
27. juli 2005 - 21:14 #14
Mange tak for besvarelsen, jeg fandt selv en metode meget lignende.

Så giver du et svar er jeg villig til at give dig de points.
Avatar billede Slettet bruger
27. juli 2005 - 23:10 #15
Det kommer her.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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