Как мне настроить 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 должен быть довольно простым.

Другие вопросы по тегам