Sk!ppy Skrevet 15. desember 2012 Del Skrevet 15. desember 2012 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
molty Skrevet 16. desember 2012 Del Skrevet 16. desember 2012 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
etse Skrevet 16. desember 2012 Del Skrevet 16. desember 2012 En enkel oversikt over database-designet er veldig hjelpsomt i slike tilfeller. I hvertfall over de relevante delene av databasen. Lenke til kommentar
Sk!ppy Skrevet 16. desember 2012 Forfatter Del Skrevet 16. desember 2012 Databasen ligger her; http://pastebin.com/B8TAVD9M roles.inherit = roles.id på en annen rad Permission og roles kobles sammen inni roles_permissions User_roles kobles til roles Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå