2009-06-03 5 views
0

Ich habe eine Datenbank Einrichtung wie dieser (ich weiß, dass es das beste Setup aber seine aus meiner Macht ist nicht es gibt :-(Wie konfiguriere ich CakePHP ACL bei 3 Benutzergruppen?

Grundsätzlich zu ändern sind drei Ebenen der Nutzer - Admin - Manager - Mitarbeiter

ein paar Anmerkungen: -Jeder Mitarbeiter zu Abteilung gehört -Wenn der Staffs logon_code erscheint in der Managertabelle sind sie ein -Manager, da sie sich ein Mitarbeiter sind -Wenn die Mitarbeiter logon_code im Manager erscheint Tabelle und SystemAdmin ist se t zu 1, sie sind Admin

Wie auf der Erde gehe ich über Einstellung ACL/Auth für diese? Irgendwelche Ideen?

TABLE tblStaff ( StaffID int CREATE (11) NOT NULL auto_increment, dept_id VARCHAR (5) default NULL, logon_code char (10) NOT NULL, forename char (50) NOT NULL, surname char (50) NOT NULL, PRIMÄRSCHLÜSSEL (StaffID), );

CREATE TABLE tblManager ( ManagerID VARCHAR (15) NOT NULL, logon_code VARCHAR (15) NOT NULL, dept_id VARCHAR (5) NOT NULL, SystemAdmin Tinyint (1) unsigned Standard NULL, PRIMARY KEY (ManagerID) );

CREATE TABLE tblDepartment ( dept_id VARCHAR (5) NOT NULL, sect_id VARCHAR (50) Standard-NULL, subsect_id VARCHAR (50) Standard-NULL, sect_name VARCHAR (50) Standard-NULL, sect_abbr VARCHAR (50) Standardwert NULL, subsect_name varchar (50) Standardwert NULL, PRIMÄRSCHLÜSSEL (dept_id) );

Antwort

1

Ich sehe ehrlich gesagt nicht, warum tblStaff und tblManager in Ihrem Beispiel getrennt werden sollten. Sind das nicht alle "Mitarbeiter", also "Mitarbeiter" auf irgendeine Art?

Warum nicht:

Tabelle tblUsers erstellen (UserID, logon_code, dept_id, SYSTEM, Vorname, Nachname, etc)

Schließlich, unabhängig davon, ob sie seine "Personal" oder "Manager" sie wird "Benutzer" Ihrer Anwendung sein.

Darüber hinaus können Sie ein weiteres Feld hinzufügen (z. B. user_level_id), das die Rolle jedes Benutzers festlegt. Danach sollte Auth/ACL ziemlich einfach sein.

+0

Die Tabelle tblManager wird benötigt, da es möglich ist, dass ein Mitarbeiter für mehr als eine Abteilung zuständig ist. Aber es hilft zu wissen, dass statistid und eine "user_level_id" irgendwo sein müssen – Jenski

+0

Dies kann durch eine HABTM-Beziehung zwischen Ihren tblUsers und tblDepartments gelöst werden, keine Notwendigkeit, zwei Tabellen zu halten. Das Schlüsselwort hier ist Normalisierung. –

+0

In der Theorie ist nicht der TblManager die Verknüpfungstabelle in der HABTM-Beziehung? 1 Mitarbeiter kann 2 oder mehr Manager haben 1 Abteilung kann 2 oder mehr Manager haben Systemberechtigungen, die in der Manager-Tabelle gespeichert sind, um festzustellen, welchen Zugriff sie haben/dürfen – Jenski