Как мне настроить CakePHP ACL для 3 уровней пользователей?
У меня есть настройки базы данных, подобные этой (я знаю, что это не лучшая настройка, но я не в силах ее изменить:-(
В основном есть 3 уровня пользователей - Администратор - Менеджеры - Персонал
Несколько замечаний: -Каждый сотрудник относится к отделу -Если логон_кода персонала отображается в таблице менеджера, то он является менеджером, в противном случае он является сотрудником -Если логон_кода персонала отображается в таблице менеджера, а для SystemAdmin установлено значение 1, они админы
Как же я могу настроить ACL/Auth для этого? Есть идеи?
СОЗДАТЬ СТОЛ tblStaff
(StaffID
int (11) NOT NULL auto_increment, dept_id
varchar (5) по умолчанию NULL, logon_code
char (10) NOT NULL, forename
char (50) NOT NULL, surname
char (50) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (StaffID
),);
СОЗДАТЬ СТОЛ tblManager
(ManagerID
varchar (15) НЕ NULL, logon_code
varchar (15) НЕ NULL, dept_id
varchar (5) NOT NULL, SystemAdmin
tinyint (1) без знака по умолчанию NULL, PRIMARY KEY (ManagerID
));
СОЗДАТЬ СТОЛ tblDepartment
(dept_id
varchar (5) NOT NULL, sect_id
varchar (50) по умолчанию NULL, subsect_id
varchar (50) по умолчанию NULL, sect_name
varchar (50) по умолчанию NULL, sect_abbr
varchar (50) по умолчанию NULL, subsect_name
varchar (50) по умолчанию NULL, первичный ключ (dept_id
));
1 ответ
Честно говоря, я не понимаю, почему tblStaff и tblManager должны быть разделены в вашем примере. Разве они не все "сотрудники", то есть "сотрудники", в каком-то смысле?
Почему бы и нет:
создать таблицу tblUsers (UserID, logon_code, dept_id, SystemAdmin, имя, фамилия и т. д.)
В конце концов, независимо от того, будут ли они "персоналом" или "менеджером", они будут "пользователями" вашего приложения.
Кроме того, если вам нужно больше разделить их, вы можете добавить другое поле (например, user_level_id), которое будет определять роль каждого пользователя. После этого Auth/ACL должен быть довольно простым.