Gå til innhold

Brukergrupper, tilganger, subgrupper.


Anbefalte innlegg

Hei!

 

Utvikler et lite spill for tiden hvor brukerene blir delt inn i grupper. En gruppe kan arve tillatelse fra en annen gruppe, som igjen kan arve sine tillatelser.

 

Jeg får det til kjempefint når det er for å se om gruppen brukeren er i har gjeldene tillatelse med denne koden:

 

 

<?php
function access($userid, $permid) {
 $query = mysql_query("SELECT * FROM `user_roles` WHERE `user_id`='".intval($userid)."'");
 $roles = mysql_fetch_array($query);

 $permissions = mysql_query("SELECT * FROM `roles_permissions` WHERE `role_id`='".intval($roles['role_id'])."' AND `permission_id`='".intval($permid)."'");
 $permission = mysql_fetch_array($permissions);

 if($permission['permission_id'] == $permid) {
  return true;
 } else {
  return false;  
 }
}
?>

 

 

 

Problemet er når brukeren er i gruppe 1, som arver tillatelser fra gruppe 2, som igjen arver fra gruppe 3. Sjekke at gruppe 2 har tillatelsen, slik at brukeren i gruppe 1 har samme tillatelse er ikke noe problem, men når man kommer opp i mer enn to ledd blir det litt værre. Forestiller meg at dette må løses med en while-løkke, men usikker på hvordan det skal gjøres så den stopper. Jeg kunne muligens brukt goto funksjonen. Noen som har forslag til noen gode løsninger?

Lenke til kommentar
Videoannonse
Annonse

En løsning kan jo være at du først finner ut hvor den skal hente tillatelser fra. Dette gjennom en while løkke hvor du lagrer ID i en tabell

Så kan du jo bruke denne tabellen til å lage en string til å putte inn i en sql spørring som henter hvor ID = 1 OR id = 2 OR id = 3

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...