2015-01-15 11 views
7

Ich habe eine Seite in codeigniter gebaut geholt werden, für die ich eine Zugriffssteuerungsliste entworfen haben Berechtigungen für verschiedene Arten von Benutzern zu verwalten. Verschiedene Benutzer bei Site angemeldet sind:Access Control List Datenbankspalte zu verwalten, die

  1. Super-Admin
  2. Admin
  3. SEO Benutzer
  4. Entwickler

Jetzt habe ich die Access Control abgeschlossen haben für diese und die Erlaubnis für Hinzufügen, Aktualisieren , Liste und Löschen können jedem Benutzer über ein Modul zugewiesen werden, auf das Super Admin zugreifen kann. Jetzt

(dies ist ein Teil der neuen Anforderung des Kunden) ich die Spalten zugänglich für bestimmte Benutzer machen wollen, zB:

Wenn eine Tabelle Produkte hat 4 Spalten

Products : 
id | Products | Price | Status 
-----+-----------+-------+---------- 
1 | prod1 | 20.0 | 1 
2 | prod2 | 35.6 | 0 

Jetzt möchte ich, dass Für SEO-Benutzer wird der Spaltenpreis während des Listings nicht angezeigt.

HINWEIS: Dies ist nur ein Beispiel, ich muss dies dynamisch machen, so dass Admin steuert, wer die Berechtigung für welche Spalte hat. Ich kann nicht einfach If Else-Logik in meine Ansichtsdatei schreiben, um unerwünschte Spalten auszuschließen.

Bitte sagen Sie mir, wie ich das tun kann, das gesamte System oder machen sehr große Veränderungen ohne neu zu gestalten.

Antwort

0

Deshalb verwenden Sie ACLs. ACLS sind eine dynamische Methode zum Speichern von Berechtigungen. Ich hoffe, Sie haben ein Benutzermodell. In diesem Modell müssen Sie die ACLs für den aktuellen Benutzer lesen. Sie legen einige Konstanten für die Zugriffsebene fest, ähnlich wie bei unix chmod. Dann erstellen Sie ein Array mit allen Spalten und dem ACL-Wert für diese Spalte.

Ihre Abfragen erstellen, können Sie Methoden wie

isSeo(); 

oder

hasAccess($tableName); 

Natürlich ist dies eine große Veränderung würde, aber ich weiß nicht, wie Sie ACLs implementieren möchten verwenden können whichout Ändern Sie Ihren Code.

+0

ich schon Habe diese Funktionen, um Benutzertypprivilegien für eine bestimmte Tabelle zu überprüfen. Was ich gerade versuche, ist, dass ich Benutzerprivilegien für bestimmte Spalten dieser Tabelle setzen möchte. – Mohan

+0

Dann würde ich vorschlagen, einen Parameter für die Spalte hinzuzufügen: hasAccess ($ tableName, $ Spalte); – Corni

0

sein kann Stored Procedure/Funktionen versuchen oder versuchen Sie es mit rohen SQL ähnliche

GRANT SELECT(id,Products,Status) ON Products TO 'SEO User'@'somehost'; 
1

Sie können ion_auth Bibliothek verwenden .. sehr einfach zu integrieren und Verwalten von Benutzern und Zugriffsebenen ...