Ситуация
Мы разрабатываем приложение для веб-магазина CakePHP, которое предлагает нам возможность использовать только одну базу данных для разных доменов. Например, у нас есть shop1.com, shop2.com и shop3.com все в разных доменах, которые используют одну и ту же базу данных. Клиенты видят разные магазины, но мы можем поддерживать их и обрабатывать заказы с одного сервера.
<Сильный> Проблема
Мы сталкиваемся с проблемой с ACL-системой в CakePHP. Мы хотели бы иметь возможность устанавливать разрешения для определенных магазинов, поэтому пользователь «Roger» не имеет доступа к странице «admin_edit» в магазине 1 , но у него есть разрешение на страницу «admin_edit» в магазине 2 .
В каждом хранилище указывается уникальный идентификатор магазина в Config/bootstrap.php.
Возможные решения
Я уже пытался добавить поле с именем store_id в таблицу acos_aros. Это исправит проблему, потому что разрешения зависят от хранилища, из которого сделаны действия. Но как я могу проверить store_id в этой базе данных самым чистым способом? Без внесения изменений в ядро CakePHP.
Факты
- Мы используем CakePHP 2.2.3
- У нас есть одна центральная база данных, содержащая все продукты, пользователи и т. д.
- У нас есть разные домены (приложения) на нескольких серверах, все магазины (3 на данный момент) индексируются уникальным store_id, который установлен в Config/bootstrap.php.
- Мы используем авторизацию CRUD.
- Мы хотели бы установить разрешения не только для каждого контроллера/действия, но и для каждого хранилища. В противном случае все администраторы в хранилище 1 также имеют доступ к хранилищу 2.