Несколько доменов в одной базе данных и разрешения ACL CakePHP

Ситуация

Мы разрабатываем приложение для веб-магазина 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.
1
nl ja de
Вы против использования чего-то другого, кроме ACL?
добавлено автор Dave, источник
Я бы использовал роли, а затем HABTM между пользователями и сайтами - что-то вроде этого.
добавлено автор Dave, источник
Нет, это абсолютно не проблема. Что ты предлагаешь?
добавлено автор Kaduna, источник

1 ответы

У меня есть решение вашей проблемы на этом тема . Для решения требуется домен-маршрутизатор и после того, как вы установили значение для домена, на котором вы находитесь (domain.id). Затем вы можете ограничить доступ к определенным данным в разных контроллерах. Интегрируйте это с ACL в cakephp.

0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp