Zugriffsrechteverwaltung

aKraus

Erfahrenes Mitglied
Hallo,

Ich habe folgendes Datenmodel (Bild siehe anhang).


Es existieren mehere permissions (news schreiben, poll erstellen, ...). Diese Rechte können einem user zugeteilt werden. Da ein User mehere Zugriffsrechte haben kann, handelt es sich um eine Assigntabelle. Desweiteren kann ein user in meheren Squads (teams) sein (z.B. Admin, Newsposter, Promogirl ;)). Jedem Squad können einzelle Permissions sowie user zugewiesen werden. Beim hinzufügen eines user zu einem Squad schreibe ich dem für den user alle rechte des squads in die permission_assign tabelle.

Jetzt hab ich "nur" folgendes Problem:
Ein user kann ich meheren Squads sein. Wenn ich jetzt einen user lösche sollen nur die Zugriffsrechte aus der permission_assign tabelle gelöscht werden, die der User durch keinen anderen Squad hat (wenn er z.B. aus der Gruppe Admin rausgelöscht wird, soll er als dadurch, dass in er in dem Squad Newsposter ist immernoch News posten dürfen).
Da ganze hätte ich gerne in einem Select. Ich weiß, dass es geht, allerdings weiß ich nicht, wie es geht. ;)

also so ungefähr:
Code:
SELECT permission_id
FROM users,
	permission,
	permission_assign,
	squads_permission,
	squads,
	squads_assign
WHERE users.user_id = permission_assign.user_id
AND users.user_id = squads_assign.user_id
AND squads_permission.squad_id = squad.squad_id
AND squads_permission.permission_id = permission.permission_id
AND permission.permission_id = permission_assign.permission_id
AND squad.squad_id = squad_assign.squad_id
AND squad.squad_id = 5
AND users.user_id = 1

Da müsste mir jetzt die ganzen Permissions eines Squads zurückbringen, in dem der bestimmte user ist (sorry, kannst momentan nicht testen, da ich in der Arbeit sitze). Jetzt will ich allerdings nicht die permission_id's, welche nicht einen anderen Squad des users zugewiesen sind.

Ich hoffe, dass mir jemand helfen kann und mein Text gleich verstanden wurde ;)

Schon einmal Danke im vorraus
 

Anhänge

  • dbauszug.JPG
    dbauszug.JPG
    49,4 KB · Aufrufe: 26

Neue Beiträge

Zurück