【问题标题】:How to setup multi-tenant rails app with an admin如何使用管理员设置多租户 Rails 应用程序
【发布时间】:2018-10-31 14:19:57
【问题描述】:

我对如何正确设置 Rails 应用程序的模型有疑问。我将使用 gem Apartment 进行多租户,使用 gem Devise 进行身份验证。

我想要实现的是我将拥有 3 个用户级别。 管理员所有者用户

基本上,管理员会处理站点中的所有所有者,他可以添加、编辑和删除所有者。假设 admin 拥有整个网站 (https://example.com)。

所有者将处理用户,他可以添加、编辑和删除用户。如果 admin 拥有 (https://example.com),则 owner 仅拥有 (https://owner1.example.com)。

每个子域都有自己的用户,由所有者处理。并且所有所有者都由 admin 处理。

我目前想出的是两个模型。

  • 网站帐号
  • 用户帐户

WebsiteAccount 将包含 subdomainowner_name 列。 UserAccount 将拥有 emailpassworduser_level。其中 user_level 可以是 owneruser

然后该设计将用于 UserAccount 模型。 UserAccount 模型将仅显示基于子域的数据。

现在的问题是 admin 帐户在哪里?

我是否要为其创建一个单独的模型并在其上使用 Devise gem?

【问题讨论】:

  • 您说的是“超级管理员”,或所有租户应用程序的管理员。这通常是具有不同标志的普通用户,或者是表示超级管理员身份的“内部帐户”的成员资格。

标签: ruby-on-rails ruby devise multi-tenant apartment-gem


【解决方案1】:

我认为您可以使用同一张表,只需为每个用户、管理员、所有者和用户添加角色(角色的不同表或每个角色的布尔属性),然后在此或某些 before_filter 上使用条件来验证特定类型的用户可以访问不同的视图或运行某些操作。似乎不太复杂。

【讨论】:

    【解决方案2】:

    如果您使用的是公寓 gem,则需要为“管理员”(例如 AdminUser)创建一个新的 Devise 用户模型,并将该模型添加到公寓配置文件中的 config.excluded_models 中:https://github.com/influitive/apartment#excluding-models。这将使 AdminUsers 记录在顶级域中可用。您不能只向 UserAccount 模型添加一个角色,因为这些记录的范围是每个公寓的“租户”。

    您还需要将 WebsiteAccount 添加到公寓的 config.excluded_models 以允许在 example.com 上进行管理。这是假设您希望 WebsiteAccount 成为您公寓的“租户”。

    要管理每个 WebsiteAccount 的 UserAccount,您需要在每个 WebsiteAccount 的子域中进行管理,或者在 example.com 上进行一些租户切换以获取访问权限并将 UserAccount 分配给 WebsiteAccount。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多