开发和公寓宝石多租户应用程序

4

我的应用目前只允许用户在他们的子域名下登录,即subdomain.domain.com/users/sign_in。我希望用户可以在domain.com/users/sign_in处登录。

我是Rails新手,从Github上的这个项目得到了关于子域名的很多帮助:https://github.com/appcasts/saas-timetracker

在routes.rb中,我添加了"devise_for: users"以便在domain.com/users/sign_in处显示登录表单,但是我无法通过身份验证将用户身份验证到子域名,因为我收到一个“无效的电子邮件和密码”错误。

有没有办法让用户从domain.com登录并被验证并重定向到他们正确的子域名?

我尝试过:如何:将登录范围限制为子域

但是我遇到了一个“subdomain”列不存在的错误。我还尝试了Custom_Failure_app解决方案,但它在我添加所有redirect_to路径时都会给我一个错误。

任何帮助或建议将不胜感激。

1个回答

4

在我们的应用程序中,我们使用以下代码创建用户:

def create 
  @user = User.new(user_params)
  @account = Account.new(subdomain: params[:subdomain], owner: @user)
  if @user.valid? && @account.valid?
    Apartment::Tenant.create(@account.subdomain)
    Apartment::Tenant.switch(@account.subdomain)
    @user.save
    @account.save
    redirect_to new_user_session_url(subdomain: @account.subdomain)
  end 
end

在账户控制器的创建方法中。
你可以在这里查看: https://github.com/DefactoSoftware/Hours/blob/development/app/controllers/accounts_controller.rb

你的用户账户创建方法与我的非常相似,我注意到你的登录页面在子域名上,例如subdomain.happyhours.io,但是,我希望将登录页面放在http://happyhours.io/users/sign_in 上。 - Codelove
那么你必须在那个子域名那里进行询问,在你的方法中让用户登录时,你必须使用 Apartment::Tenant.switch(params[:subdomain]) 切换到正确的公寓,然后使用代码登录用户并将其发送到正确的路由。 - Marcel
Marcel,感谢您的建议,但问题不在注册和注册后重定向。账户创建正常并且重定向也正常,所以如果我重定向到:new_user_session_url(subdomain: @account.subdomain),用户可以正常登录,但是如果我重定向到实际上来自HomeController的根目录,用户可以输入他们的电子邮件和密码,但是会收到错误的电子邮件和密码提示。 - Codelove

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接