Добавьте дополнительный уровень ко всему сайту и начните с чистой версии приложения. - PullRequest
0 голосов
/ 19 мая 2018

Проблема:

У нас есть веб-приложение (в Symfony 2.8) с + - 125 таблицами, заполненными данными.Теперь наш клиент просит добавить дополнительный верхний уровень с именем «Division».И когда они создают новый Отдел, они получают полную копию приложения, чтобы начать работать. Так что почти как новый чистый лист.

Пользователи остаются прежними, некоторые получат доступ к 1 Отделу, некоторыек кратному.

Важно: В будущем появится еще больше отделов, администраторы клиентов могут просто нажать «новое подразделение» .

Теперь мы просматриваем все приложение:

  • Субъекты верхнего уровня получают дополнительное свойство Division (через DivisionTrait), добавленное к ним ...

  • изменение каждого отдельного запроса путем добавления чего-то вроде AND division.id = $session->get('current_division') во все контроллеры .

  • внедрение этого идентификатора подразделения во все типы форм итакже расширить каждый запрос.

  • И, конечно, много тестирования и отладки

Но это много работы.

Вопрос:

Какие есть варианты или шаблоны проектирования, чтобы мы могли достичь этого более простым способом?Я уверен, что мы не первые с этой проблемой.;)

1 Ответ

0 голосов
/ 19 мая 2018

Звучит так, будто вы подходите неправильно ... или ваше описание проблемы вводит в заблуждение.

На мой взгляд, у каждого отдела есть свое собственное приложение (со своим доменом).С собственной независимой базой данных.Что такое общий доступ, так это учетные записи пользователей, что означает, что вам необходимо создать 3-е приложение: систему аутентификации, которая может идентифицировать ваших пользователей и проверять их авторизацию для доступа к одному из подразделений.

Итак, создайте систему аутентификации.

Свяжите общий идентификатор с внутренней таблицей «пользователи», которую вы будете использовать для ACL / RBAC, но оставьте логин для обработки, почему внешнее приложение.

Таким образом, вам не нужно вручную редактировать весь код и пытаться втиснуть квадратный колышек в круглое отверстие.

...