Как настроить приложение мультитенантных рельсов с администратором - PullRequest
0 голосов
/ 31 октября 2018

У меня проблема с тем, как правильно настроить модели моего приложения rails. Я буду использовать драгоценный камень Квартира для нескольких арендаторов и драгоценный камень Разработать для аутентификации.

Чего я хочу добиться, так это того, что у меня будет 3 уровня пользователя. admin , владелец и пользователь .

По сути, admin обрабатывает всех владельцев на сайте, он может добавлять, редактировать и удалять владельцев . Представьте, что admin владеет всем сайтом (https://example.com).

Владелец будет обрабатывать пользователей , он может добавлять, редактировать и удалять пользователей . Если admin владеет (https://example.com), то владелец владеет только (https://owner1.example.com).

Каждый поддомен будет иметь своих пользователей , обрабатываемых владельцем . И все владельцы обрабатываются admin .

На данный момент у меня есть две модели.

  • WebsiteAccount
  • учетная_запись_пользователь

WebsiteAccount будет иметь столбцы поддомен и имя_хозяина . У учетной записи пользователя будет электронная почта , пароль и user_level . Где user_level может быть владелец или пользователь .

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

Теперь вопрос в том, куда падает учетная запись admin ?

Могу ли я создать для него отдельную модель, а также использовать Devise Gem?

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Если вы используете жемчужину квартиры, вам нужно будет создать новую модель пользователя Devise для 'admin' (например, AdminUser) и добавить эту модель в config.excluded_models в файле конфигурации вашей квартиры: https://github.com/influitive/apartment#excluding-models. Это сделает записи AdminUsers доступными в домене верхнего уровня. Вы не можете просто добавить роль в модель UserAccount, поскольку эти записи относятся к каждой квартире арендатора.

Вам также необходимо добавить WebsiteAccount в config.excluded_models для квартиры, чтобы разрешить управление ими на example.com. Это предполагает, что вы хотите, чтобы WebsiteAccount был «квартиросъемщиком» вашей квартиры.

Чтобы управлять учетной записью UserAccount для каждой учетной записи WebsiteAccount, вам необходимо либо управлять ею в пределах поддоменов каждой учетной записи WebsiteAccount, либо выполнить переключение арендатора на example.com, чтобы получить доступ и назначить учетную запись UserAccount для WebsiteAccount.

0 голосов
/ 01 ноября 2018

Я думаю, что вы можете работать с одной и той же таблицей и просто добавить роль каждому пользователю, администратору, владельцу и пользователю (разные таблицы для ролей или просто логический атрибут для каждого), а затем просто поиграть с условиями в этом или некотором before_filter для проверки этот определенный тип пользователя может получить доступ к различным представлениям или выполнить некоторые действия. Не кажется слишком сложным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...