Ребят, есть задача реализовать небольшой SAAS (в итоге оказалось, что задачка весьма большая) с следующими плюшками:
- У каждого клиента должен быть свой поддомен на нашем основном домене, т.е. customer1.example.com, customer2.example.com - при этом, данные домены должны задавать сами клиенты при регистрации. Быть может кто-то знает пакет для Django, который позволяет это реализовать используя подход "Одна база данных - Одна схема", т.е. в таблице добавляется поле tenant_id допустим ? Или может лучше юзать подход "Одна база - Один кастомер" ? (тут конечно встает вопрос в автоматизации создания данной базы под кастомера и целесообразно ли это?) (и может у кого-то есть инструкция, как настроить nginx чтобы клиенты могли к своим кастомным субдоменам прикручивать личные домены, т.е. например у клиента есть личный домен cabinet.site.ru, он у себя в DNS прописывает настройки, чтобы запросы с его cabinet.site.ru шли на customer1.example.com (который он зарегал у нас в SAAS сервисе) - при этом nginx на нашей стороне должен понимать к какому домену идет обращение)
- Сам сервис нужно сделать как SPA с использованием Vue для веб-морды, Graphene для бекенда, чтобы можно было юзать GraphQL - и тут вопрос, как скрестить это все дело, чтобы Vue мог понять, на каком домене открыто приложение и мог дать эту информацию бекенду ?
Понимаю, что вопрос весьма размытый, в текущий момент, не знаю как более конкретно его сформировать, т.к. уже 2 дня гуглю тему, как организовать multi tenancy на django и при этом, чтобы заюзать Vue и Graphene. Поэтому уже пришел сюда, буду благодарен любым ссылкам на материалы (это бы очень сильно помогло), мыслям, подсказкам, чтобы хоть как-то сдвинуться с места и структурировать у себя в голове инфу.
Делаешь на беке миддлварю, которая будет из реквеста брать домен к которому обратились, по домену дальше определяешь своего кастомера, аутентифицируешь, авторизуешь и делаешь вообще что твоей душе угодно - роутинг БД, кастомные апи-эндпоинты и вообще все.
Nginx настраиваешь на обработку всех субдоменов.
С вебом примерно понял как сделать) Спасибо за подсказку, но есть еще один вопрос, как в таком случае аутентифицировать и авторизовывать мобильного клиента?
Вот у нас есть customer1.domain.com и customer2.domain.com, у этих кастомеров, есть свои клиенты, назовем их покупателями, чтобы разграничить понятия и не смешивать все воедино, этим покупателям доступно одно мобильное приложение, в котором они могут аутентифицироваться по логину, емайлу, телефону, и паролю, и дальше уже в момент авторизации бекенд должен понять, к какому кастомеру данный покупатель относится и подгрузить всю инфу в приложение - тут возможно я сейчас не так ставлю вопрос, т.к. по сути каждый покупатель привязывается к какому-то определенному кастомеру, и тут скорей всего больше вопрос о том, как дальше слать реквесты из приложения - на главный domain.com или лучше при каждом реквесте возвращать домен кастомера и подставлять его в следующий реквест?