Добавьте дополнительный верхний уровень ко всему сайту и начните с чистой версии приложения

Проблема:

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

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

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

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

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

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

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

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

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

Вопрос:

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

Почему у вас в контроллерах есть SQL-запросы? Похоже, в этой кодовой базе может быть много более глубоких проблем =)

tereško 19.05.2018 14:42

Хорошо, вы правы, мы должны вывести запросы из контроллеров, но это не мой вопрос;)

Julesezaar 19.05.2018 15:12

Вы не собираетесь иметь отдельную базу данных для каждого подразделения?

Cerad 19.05.2018 17:09

Действительно, мы хотим хранить все в одной базе данных. Более того, я полагаю, что в будущем некоторые данные будут доступны по нескольким подразделениям. Клиент часто меняет свое мнение, но не волнуйтесь. Клиент хороший, они всегда платят за дополнительные часы;)

Julesezaar 20.05.2018 12:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
57
1

Ответы 1

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

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

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

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

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

Пользователь-администратор клиента должен иметь возможность просто нажать «новое подразделение» и начать работу без нашего вмешательства.

Julesezaar 19.05.2018 15:17

Затем, надеюсь, вы сказали клиенту, что это займет не меньше месяца, так как вам нужно полностью переделать все это. Вам необходимо изменить не только систему аутентификации, но и авторизацию. И для нескольких таблиц потребуется добавление внешнего столбца division_id. Тут бардак и хороших вариантов нет - просто много ручного труда, чтобы все переписать :(

tereško 19.05.2018 15:31

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