Существует множество обучающих руководств по запуску zfc-user и zfc-rbac в Zend Framework 2. Страницы github для zfc-user и zfc-rbac (https://github.com/ZF-Commons), и реализация действительно довольно проста (как указано во многих уроках). Я также нашел схемы SQL, которые необходимы как для zfc-user, так и для zfc-rbac (/vendor/zf-commons/zfc- [user/rbac]/data/).
Создание пользователя в базе данных легко, так как zfc-пользователь уже устанавливает это для вас (http://example.com/user). Пока все хорошо. Теперь я хочу заполнить роли, но мне не ясно, как правильно заполнять таблицы rbac. Недостаток информации об этом меня удивляет, поскольку компонент zfc-rbac является популярным модулем для Zend Framework.
Я понимаю принципала управления доступом на основе ролей и совокупности таблиц для разрешений, а таблица, связывающая разрешения и роли вместе, понятна, это не соответствует мне таблица ролей. Я понимаю, что у вас может быть роль, которая имеет родительскую роль, но неясно, как заполнить таблицу родительской ролью, поскольку существует ограничение внешнего ключа, в котором указано, что parent_role_id должен быть "role_id".
Ниже приведен SQL для таблицы ролей (это SQL, предоставленный zfc-rbac):
CREATE TABLE `rbac_role` (
`role_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`parent_role_id` int(11) unsigned NOT NULL,
`role_name` varchar(32) NULL,
PRIMARY KEY (`role_id`),
KEY `parent_role_id` (`parent_role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `rbac_role`
ADD CONSTRAINT `rbac_role_ibfk_1` FOREIGN KEY (`parent_role_id`) REFERENCES `rbac_role` (`role_id`);
При наличии внешнего ключа добавление родительской роли кажется невозможным?
INSERT INTO `rbac_role` (parent_role_id, role_name) VALUES (NULL, 'admin');
В основном, мой вопрос (и я очень глуп для этого), но как выглядит вставка для родительской роли? И если оператор insert, который я представил, на самом деле правильный, всегда ли нужно удалить внешний ключ, прежде чем вставлять родительскую роль?